简单的Unix重定向问题:将文件中的行作为命令行参数传递给脚本
好的,我的Unix脚本编写技能显然已经过时了。我所要做的就是有一个包含4个参数的文件,我希望将这些参数传递给脚本,就像它们来自命令行一样。但奇怪的是:简单的Unix重定向问题:将文件中的行作为命令行参数传递给脚本,unix,command-line,command-line-arguments,Unix,Command Line,Command Line Arguments,好的,我的Unix脚本编写技能显然已经过时了。我所要做的就是有一个包含4个参数的文件,我希望将这些参数传递给脚本,就像它们来自命令行一样。但奇怪的是: ./myscript.sh < mycmds.txt /myscript.sh>out.txt要使mycmds.txt的内容作为命令行参数可用,只需在调用myscript.sh时内联内容即可: ./myscript.sh $(< mycmds.txt) /myscript.sh$(
./myscript.sh < mycmds.txt
/myscript.sh
看起来不像我想象的那样。myscript.sh的内容包括:
cat >> out.txt <<EOF
$1 $2 $3 $4
EOF
cat>>out.txt要使mycmds.txt
的内容作为命令行参数可用,只需在调用myscript.sh
时内联内容即可:
./myscript.sh $(< mycmds.txt)
/myscript.sh$(这是因为,您忽略的微妙之处在于,标准输入参数和位置参数不是一回事
标准输入,您可以使用“Ooo.”重定向该输入。。我喜欢$(
的外观+1谢谢,这看起来干净、简单而且有效。我不知道为什么在我搜索“InputRedirection unix”时没有更多提到$,但这可能是一个语义问题。无论如何,谢谢。来自bash手册:“命令替换$(cat文件)可以替换为等效但更快的$(
的某种奇特形式。谢谢。我选择了一个不同但相似的答案。我想我有点困惑,<为什么不传递文件的内容,就好像它们是在命令行中键入的一样。我想这就是重点。显然,我在这里遗漏了一些微妙之处,需要使用$。
./myscript.sh $(cat mycmds.txt)
ls $(expr 1 + 3)