源文件作为参数?

源文件作为参数?

我已经阅读了使用源在另一个文件中运行另一个文件的内容:

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它。

相关内容