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文件中得到一个空行.
那么我在这里做错了什么?将参数存储在文件中并将它们传递给脚本的正确方法是什么,以便将它们视为来自命令行?
要使内容mycmds.txt
可用作命令行参数,只需在调用时内联内容myscript.sh
:
./myscript.sh $(< mycmds.txt)
Run Code Online (Sandbox Code Playgroud)