我有这种情况:
./
./myscript.sh
./arguments.txt
./test.sh
在内部myscript.sh
,我必须运行文件test.sh
,并将其中包含的参数传递给它arguments.txt
。
myscript.sh是:
arguments=$(cat arguments.txt)
source test.sh $arguments
如果arguments.txt最多包含一个参数,则此方法效果很好:
firstargument
替换为:
++ source test.sh 'firstargument'
但是问题在于两个或多个参数。它这样做:
++ source test.sh 'firstargument secondargument'
另外,我也不知道内部的参数数量arguments.txt
。可以为零或更多。
您所描述的不是bash的默认行为。您是在真正使用bash还是其他外壳程序(例如zsh,它将执行此操作)?
—
Patrick
@Patrick嗨,这是真正的重击。顺便说一句,我已经有了答案了,谢谢!
—
Federico Ponzi 2014年
您实际上在写
—
格伦·杰克曼
source test.sh "$arguments"
引号吗?这将是你的描述一个解释
我尝试使用双引号和不使用双引号。通过bash的替换,我总是得到单引号。因此
—
Federico Ponzi 2014年
source test.sh "$arguments"
,source test.sh $arguments
两者都导致source test.sh 'firstargument secondargument'
。