Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单的Unix重定向问题:将文件中的行作为命令行参数传递给脚本_Unix_Command Line_Command Line Arguments - Fatal编程技术网

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

简单的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$(

好的,我的Unix脚本编写技能显然已经过时了。我所要做的就是有一个包含4个参数的文件,我希望将这些参数传递给脚本,就像它们来自命令行一样。但奇怪的是:

./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)