[英]bash arguments with quotes in script
我正在尝试在bash中构造对程序的(复杂)调用。
该程序需要一个文件列表,其中文件名可能包含空格。
我将调用构造如下:
for VAR in $ARR; do
CALL_ARGS+=" \"${VAR}.csv\""
done
然后使用./program ${CALL_ARGS}
调用程序
例如,当$VAR
是"abc"
,我想拥有./program "abc"
,但是得到的是'"a' b 'c.csv"'
,这显然被错误地引用了。
我已经在StackOverflow上看到过类似的问题/答案,但似乎没有一个适用于我的问题。
处理Bash中可能包含空格(或其他各种字符)的项目列表的最简单,最安全的方法是使用数组。 例如:
files=('a b c' 'd e' f)
args=()
for f in "${files[@]}" ; do
args+=( "$f".csv )
done
./program "${args[@]}"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.