微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我想执行碰巧使用 Windows / CRLF行末尾的bash脚本.

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

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

解决方法

这是一个透明的解决方法
cat > $'/bin/bash\r' << "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那样为不同的解释者做同样的事情.

原文地址:https://www.jb51.cc/linux/393651.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐