我有一个名为 script.sh 的 BASH 脚本,它接受 3 个参数并使用它们运行一个可执行文件。前两个只是数字,但最后一个是给出输入文件的参数。我希望脚本以输入作为可执行文件的参数并使用“<”作为标准输入的替代来运行可执行文件。(IE
bash script.sh 5 1 input.txt
调用BASH脚本,script.sh的内容如下:
#!/bin/bash
command1="./l${1}t${2} $3"
command2="./l${1}t${2} < $3"
echo + ${command1}
${command1}
echo + ${command2}
${command2}
当我回显 command1 我得到
./l5t1 input.txt
这正是我想要的,它运行得很好。
当我回显 command2 我得到
./l5t1 < input.txt
这又是我想要的。问题是脚本运行的实际命令是
./l5t1 '<' input.txt
这当然会导致我的程序出现分段错误。
我想知道是否有一种方法可以运行命令 2,以便它完全按照 echo 输出中打印的方式运行字符串。老实说,我不知道为什么在 < 字符周围还要插入单引号。