shell:使用多个路径和命令构建变量

时间:2016-06-08 20:06:24

标签: shell

有没有办法建立这样的变量:

var="-i \"/path to/file 1.mp4\" -i \"/path to/file 2.mp4\""

然后在程序中使用它:

ffmpeg $var

我知道\"不起作用,eval在某种程度上有效,但是eval可能很难看。

有没有eval的解决方案吗?

1 个答案:

答案 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可能表现不同。