首页 > 解决方案 > 在 bash 脚本中添加单引号

问题描述

我正在运行以下 bash 脚本。当我使用带有空格的变量时,当我使用它们时,会添加单引号。这不是我期望的结果。

我的脚本:

#!/bin/bash -x
KEY="x"
VALUE="b c"
VARS="$KEY=\"$VALUE\""

KEY="y"
VALUE="d e"
VARS="$VARS $KEY=\"$VALUE\""

env $VARS printenv

当我在调试模式下运行它时,我得到了这个结果

+ KEY=x
+ VALUE='b c'
+ VARS='x="b c"'
+ KEY=y
+ VALUE='d e'
+ VARS='x="b c" y="d e"'
+ env 'x="b' 'c"' 'y="d' 'e"' printenv
env: c": No such file or directory

但我需要以下结果:

env 'x="b' 'c"' 'y="d' 'e"' printenv

如何防止添加单引号?

当我运行这条线时,它运行良好:env x="b c" y="d e" printenv

谢谢

标签: bash

解决方案


您需要引用该$VARS变量,因为它包含空格:

#!/bin/bash -x
KEY="x"
VALUE="b c"
VARS="$KEY=\"$VALUE\""

KEY="y"
VALUE="d e"
VARS="$VARS $KEY=\"$VALUE\""

env "$VARS" printenv

何时在 shell 变量周围加上引号?


推荐阅读