unix - 简单的Unix重定向问题: Pass lines in a file as command line arguments to a script

标签 unix command-line command-line-arguments

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

./myscript.sh < mycmds.txt

似乎没有按我预期的方式工作。 myscript.sh 的内容是:

cat >> out.txt <<EOF
$1 $2 $3 $4
EOF

因此,如果我像这样从命令行运行 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)

关于unix - 简单的Unix重定向问题: Pass lines in a file as command line arguments to a script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7148926/

相关文章:

bash - 如何在 shell 中的指定行号中添加或删除字符?

regex - 如何在 unix (osx) 中搜索/替换一堆文本文件

linux - 命令行视频编辑工具

python - 如何让 Blender 导出器脚本从命令行运行?

c++ - 在 C++ 中解析命令行参数?

gdb - gdb 的 --args 的 lldb 等价物是什么?

python - 如何在 python 中处理 cpu 缓存(或调用一次函数的最快方法)

linux - 使用 sendmail 脚本时获取空文件作为附件

c# - Process.Start 不适用于 Filezilla 的 UNC 路径

haskell - 使 ReadArgs 1.0 使用单个参数