在回答另一个问题时,我创建了以下脚本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然后在命令行中复制并粘贴它就可以了。
任何想法我做错了什么?
感谢。
答案 0 :(得分:8)
使用:
eval $cmd
以便在执行之前扩展表达式中的变量。
答案 1 :(得分:2)