我正在尝试在bash中构造对程序的(复杂的)调用。
程序需要一个文件列表,其中文件名可能包含空格。
我按如下方式构造呼叫:
for VAR in $ARR; do
CALL_ARGS+=" \"${VAR}.csv\""
done
,然后使用./program ${CALL_ARGS}
例如,当$VAR
为"a b c"
时,我想拥有./program "a b c"
,但得到的却是'"a' b 'c.csv"'
,显然引用有误。
我已经在StackOverflow上看到过类似的问题/答案,但似乎都不适用于我的问题。
答案 0 :(得分:0)
在Bash中处理可能包含空格(或其他各种字符)的项目列表的最简单,最安全的方法是使用数组。例如:
files=('a b c' 'd e' f)
args=()
for f in "${files[@]}" ; do
args+=( "$f".csv )
done
./program "${args[@]}"