bash参数在脚本中带有引号

时间:2018-09-03 08:56:52

标签: bash quotes

我正在尝试在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上看到过类似的问题/答案,但似乎都不适用于我的问题。

1 个答案:

答案 0 :(得分:0)

在Bash中处理可能包含空格(或其他各种字符)的项目列表的最简单,最安全的方法是使用数组。例如:

files=('a b c' 'd e' f)
args=()

for f in "${files[@]}" ; do
    args+=( "$f".csv )
done

./program "${args[@]}"