bash - 在 Bash 的单行命令中定义变量

标签 bash

<分区>

我正在尝试通过以下命令执行命令列表:

bash -l -c "commands"

但是,当我定义一个变量然后尝试使用它们时,该变量是未定义的(空的)。明确一点:

bash -l -c "var=MyVariable; echo $var"

最佳答案

Bash 扩展(如 here 所述)将在实际执行命令之前扩展双引号内的变量值。为避免这种情况,您可以遵循以下任一选项:

选项 1:

避免使用单引号展开

bash -l -c 'var=MyVariable; echo $var'

选项 2:

通过转义所需的变量来避免双引号内的扩展

bash -l -c "var=MyVariable; echo \$var"

第二个选项允许您扩展一些变量,而另一些则不能。例如:

expandVar=MyVariable1
bash -l -c "var=MyVariable; echo $expandVar; echo \$var"

关于bash - 在 Bash 的单行命令中定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47201614/

相关文章:

regex - sed 替换星号

bash - Terminator/config 不在 .config 文件中

Bash 从长路径中提取文件基名

bash - 让 ssh 在目标机器上后台执行命令

ruby-on-rails - 从Docker容器中管理Capistrano部署的SSH key

bash - [Google Cloud][Compute Engine] 在启动脚本中找不到 Linux 基础命令

bash - 当前未安装 docker-Windows 10 上的 ubuntu 上的 bash

git - 如何在管道传输时配置 git 输出?

BASH:转义字符串

regex - Bash 变量搜索和替换而不是 sed