gpt4 book ai didi

shell - shell heredocs 中的
转载 作者:行者123 更新时间:2023-12-02 06:21:56 32 4
gpt4 key购买 nike

我正在为 Linux 构建系统的模块编写 .spec 文件,遇到一个小问题并想分享它。

用于编写脚本文件:

cat <<EOF > /path/to/somewhere/script
#blah blah
EOF
chmod +x script

当脚本在目标上运行时,存在指向脚本在主机系统中的位置的错误。基本上 $0 是错误的。

在网上看到一些示例代码后,通过更改第一行来修复它:

cat <<'EOF' > /path/to/somewhere/script
#blah blah
EOF
chmod +x script

想知道有什么区别以及是什么让它第二次起作用。

最佳答案

不同之处在于,在此版本中:

<<EOF
...
EOF

... 的功能大致为双引号字符串,执行参数扩展和命令替换等(具体来说,在您的情况下,替换 $0值为 $0),而在此版本中:

<<'EOF'
...
EOF

... 大致用作单引号字符串,并且不执行此类扩展。

(参见§3.6.6 "Here Documents" in the Bash Reference Manual。)

关于shell - shell heredocs 中的 <EOF 和 <'EOF' 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9712630/

32 4 0

Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com