在回答另一个问题时,我创建了以下脚本 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 然后在命令行中复制并粘贴它就可以正常工作。
知道我做错了什么吗?
谢谢。
最佳答案
使用:
eval $cmd
以便表达式中的变量在执行前展开。
关于bash:运行带引号的命令时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5435589/