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

标签 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 然后在命令行中复制并粘贴它就可以正常工作。

知道我做错了什么吗?

谢谢。

最佳答案

使用:

eval $cmd

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

关于bash:运行带引号的命令时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5435589/

相关文章:

Bash 脚本不会在循环中退出

linux - 在 sh 中对字符串使用运算符

bash - echo 在 bash 脚本中输出 -e 参数。我怎样才能防止这种情况发生?

linux - 了解 shell 安装脚本错误

json - 从json数据制作表格时出现jq "object cannot be tsv-formatted, only array"错误

bash - 为什么 bash 中的 ""Here strings"会更改其后任何内容的语法颜色?

python - 使用 Python 通过 ssh 将文件 cat 到远程 bash 脚本

linux - PHP -v 命令根据我当前的目录给出不同的结果

ruby - Git bash chcp windows7编码问题

Linux grep "*.out"和 ls *.out