bash:带引号的问题运行命令

时间:2011-03-25 16:54:33

标签: bash

在回答另一个问题时,我创建了以下脚本bash脚本:

#!/bin/bash

files1=( file1.txt file2.txt file3.txt )
files2=( file1_.txt file2_.txt file3_.txt )

cmd="vim -c 'set diffopt=filler,vertical' -c 'edit ${files1[0]}' -c 'diffsplit ${files2[0]}' "
echo $cmd
for i in {1..2}; do
  cmd="${cmd} -c 'tabe ${files1[i]}' -c 'diffsplit ${files2[i]}' "
done

#$cmd
echo $cmd
问题是,如果我尝试运行

$cmd

在脚本的最后我得到错误,但是如果我只使用echo $ cmd然后在命令行中复制并粘贴它就可以了。

任何想法我做错了什么?

感谢。

2 个答案:

答案 0 :(得分:8)

使用:

eval $cmd

以便在执行之前扩展表达式中的变量。

答案 1 :(得分:2)

相关问题