我有一个包含命令行参数的文件,我想将其传递给另一个脚本。
但是这个文件包含像"param 1" param2 param3
这样的元素。
我们将带参数的文件称为test.tmp
,脚本文件称为script.sh
。
如果我执行以下操作:
script.sh -p `cat test.tmp` -other_params 1 2 3
在 p
后接收到以下内容:
"param
1"
param2
param3
param 1
param2
param3
小提醒:假设
script.sh
不可修改。解决方案必须在 shell 中执行。
test.tmp
应该以 NUL 分隔的形式存储 -- 这是唯一可以存储所有可能值而不需要解析的语法。(安全地解析 shell 引用而不带来安全风险,比如允许扩展,是非常困难的 -- 除非你要将工作交给像xargs
这样的东西,但即使这样它的行为也不完全与实际的 bash 解析兼容)。如果你有机会鼓励编写script.sh
的人重新考虑,我建议你这么做。 - Charles Duffymapfile -t
方法也是一个合理的做法,如果您保证您的参数永远不需要包含字面换行符。 - Charles Duffy