我已经阅读了使用源在另一个文件中运行另一个文件的内容:
source ./filename
但我想在命令中作为参数执行此操作..(或一组)
该命令的执行方式如下:
command \
-argument \
-argument \
source ./file
-argument \
...
该文件基本上包含一组其他参数:
-argument \
-argument \
我该怎么做呢?按原样运行,会使命令失败。
答案1
本质上,您需要 的内容filename
作为参数。如果您的参数没有空格或通配符运算符,则可以轻松完成此操作:
command \
-argument \
-argument \
$(cat ./file) \
-argument \
...
如果您的参数不包含换行符或其他字符,那么您可以使用该字符作为分隔符并构造参数列表:
#! /bin/bash
args=()
while IFS= read -r arg
do
args+=("$arg")
done < filename
command \
-argument \
-argument \
"${args[@]}" \
-argument \
...
如果说参数不包含|
,那么您可以这样做:
while IFS= read -d'|' -r arg
其中文件包含:
-arg1 something|-arg2
something else|-arg3 ...
答案2
command \
-argument \
-argument \
$(cat ./file) \
-argument \
...
将与
-argument
-argument
或者
-argument -argument
作为./file
。如果是裸露的,没有双引号,shell 会将其分割$IFS
(默认为制表符、换行符、空格) 。$(cat ./file)
不需要删除斜杠的另一种选择是构造一个字符串,然后构造eval
它。