如何使用带有heredoc

时间:2016-02-29 18:38:36

标签: bash shell install heredoc

我正在尝试转换安装脚本以使用install命令,而不是创建文件并对其运行chmod +x。这是现在的脚本:

#!/usr/bin/env bash

install_target=/usr/local/bin/my_prog
volatile_path=/this/path/could/change

cat << EOF > "$install_target"
#!/usr/bin/env bash

"$volatile_path/some_other_executable" "\$@"
EOF
chmod +x "$install_target"

我更喜欢做的事情是:

#!/usr/bin/env bash

install_target=/usr/local/bin/my_prog
volatile_path=/this/path/could/change

install "$install_target" << EOF 
#!/usr/bin/env bash

"$volatile_path/some_other_executable" "\$@"
EOF

我缺少什么让这项工作?

1 个答案:

答案 0 :(得分:1)

根据评论,并假设您正在使用BSD版本的安装(GNU install有完整的帮助显示install --help而BSD只显示基本用法)我认为这就是你想要的要做的事:

#!/usr/bin/env bash

install_target=/usr/local/bin/my_prog
volatile_path=/this/path/could/change
temp_file=/tmp/$0.$$.$RANDOM

cat << EOF > "$temp_file"
#!/usr/bin/env bash

"$volatile_path/some_other_executable" "\$@"
EOF

install -bd "$temp_file" "$install_target"
rm -f "$temp_file"