加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何配置bash来处理CRLF shell脚本?

发布时间:2020-12-13 19:40:21 所属栏目:Linux 来源:网络整理
导读:我想执行碰巧使用 Windows / CRLF行末尾的bash脚本. 我知道tofrodos包,以及如何使用fromdos文件,但是如果可能的话,我想运行它们,而无需任何修改. 有没有一个环境变量会强制bash来处理CRLF? 解决方法 这是一个透明的解决方法: cat $'/bin/bashr' "EOF"#!/b
我想执行碰巧使用 Windows / CRLF行末尾的bash脚本.

我知道tofrodos包,以及如何使用fromdos文件,但是如果可能的话,我想运行它们,而无需任何修改.

有没有一个环境变量会强制bash来处理CRLF?

解决方法

这是一个透明的解决方法:
cat > $'/bin/bashr' << "EOF"
#!/bin/bash
script=$1
shift
exec bash <(tr -d 'r' < "$script") "$@"
EOF

通过允许您执行所有系统的Windows CRLF脚本,就像使用UNIX eol(使用./yourscript)一样,而不必为每个特定的调用指定它,从而摆脱了这个问题. (请注意:bash yourscript或source yourscript仍然会失败).

它的作用是因为DOS风格文件从UNIX角度将解释器指定为“/ bin / bash ^ M”.我们覆盖该文件以从脚本中删除回车符,并对结果运行实际的bash.

如果你想要的话,你可以像/ bin / sh那样为不同的解释者做同样的事情.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读