我有一个名为script.sh的BASH脚本,它接受3个参数并用它们运行一个可执行文件。前两个只是数字,但最后一个是给出输入文件的参数。我希望脚本运行带有输入的可执行文件作为可执行文件的参数,并使用“<”作为stdin的替代文件。 (即在BASH中运行变量命令
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}
当我回声命令1,我得到
./l5t1 input.txt
这正是我想要和它运行得很好。
当我回显command2我得到
./l5t1 < input.txt
这又是我想要的。问题是脚本运行的实际命令是
./l5t1 '<' input.txt
这当然引起我的程序分段错误。
我想知道是否有一种方法可以运行命令2,以便它完全按照在echo输出中打印的那样运行字符串。老实说,我不知道为什么单引号甚至插入在<字符周围。
不管怎么说,你应该能够'eval'变量的内容。 – Rubens