回显带有变量的单行 bash 脚本

tfl*_*tre 2 bash echo

我想这样做:

i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i "input_${i}.txt"'
Run Code Online (Sandbox Code Playgroud)

并将其通过管道传输到作业调度程序。

但是,这不会用它的值替换变量 i。相反,我得到了这个:

#!/usr/bin/env bash
myprogram -i "input_${i}.txt"
Run Code Online (Sandbox Code Playgroud)

我用选项 -e of echo 和单/双引号玩了一点,但无法使其工作。例如,我得到这个:

i="1"; echo -e "#!/usr/bin/env bash\nmyprogram -i \"input_${i}.txt\""
-bash: !/usr/bin/env: event not found
Run Code Online (Sandbox Code Playgroud)

我的 bash 版本是 4.1.2。

Ans*_*ers 6

尝试这个:

i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i '"\"input_${i}.txt\""
Run Code Online (Sandbox Code Playgroud)

您可以同时使用echo单引号和双引号字符串。