简单的Unix重定向问题:将文件中的行作为脚本的命令行参数传递

Fra*_*gle 3 unix command-line command-line-arguments

好吧,我的Unix脚本编写技巧显然很生疏.我想要做的就是有一个带有4个参数的文件,我希望将它们传递给脚本,就像它们来自命令行一样.但奇怪的是这样做:

./myscript.sh < mycmds.txt
Run Code Online (Sandbox Code Playgroud)

似乎没有像我期望的那样工作.myscript.sh的内容是:

cat >> out.txt <<EOF
$1 $2 $3 $4
EOF
Run Code Online (Sandbox Code Playgroud)

因此,如果我从命令行运行myscript.sh,就像这样:./myscript.sh test1 test2 test3 test4一切都很好,我看到test1 test2 test3 test4在out.txt文件中显示.但是如果我把test1 test2 test3 test4一行放在一个名为mycmds.txt的文件中然后运行./mysript.sh < mycmds.txt我只是在out.txt文件中得到一个空行.

那么我在这里做错了什么?将参数存储在文件中并将它们传递给脚本的正确方法是什么,以便将它们视为来自命令行?

Cos*_*atu 6

要使内容mycmds.txt可用作命令行参数,只需在调用时内联内容myscript.sh:

./myscript.sh $(< mycmds.txt)
Run Code Online (Sandbox Code Playgroud)