有没有办法建立这样的变量:
var="-i \"/path to/file 1.mp4\" -i \"/path to/file 2.mp4\""
然后在程序中使用它:
ffmpeg $var
我知道\"
不起作用,eval
在某种程度上有效,但是eval可能很难看。
有没有eval的解决方案吗?
答案 0 :(得分:1)
接下来要做的最好的事情是构建一个数组。当你将${var[@]}
放在某处时,它将用完整的数组内容替换它。如果将"${var[@]}"
放在某处(带引号),则会引用数组的元素,因此带空格的元素不会在空白处拆分为多个元素:
#!/bin/bash
function test() {
for ((i=0; i<$#; i++)) {
echo "Param $i: ${!i}"
}
}
var[0]="-i"
var[1]="/a/path"
var[2]="-i"
var[3]="/second/path with space/"
test "${var[@]}"
将输出:
Param 0: test.sh
Param 1: -i
Param 2: /a/path
Param 3: -i
这正是你所需要的。 我只在bash中试过这个,其他shell可能表现不同。