变量名称中不能转义空格

变量名称中不能转义空格

我尝试处理目录名称中的空格。例如:

drive=/mnt/g; export drive
mydir="$drive/directory with spaces in name"
echo "$mydir"

结果:

/mnt/g/directory with spaces in name

当然,这会在使用时崩溃,因为 bash 将其视为单独的参数。所需的结果应该是这样的:

"/mnt/g/directory with spaces in name"

作为后续处理(移动、复制或其他)的单个参数。我原以为双引号可以解决问题。显然不行。Bash 一直在吃掉双引号。有人能告诉我处理嵌入空格的变量的正确方法吗?

我在 Windows 10 中使用 Linux 的 Windows 子系统,但 Ubuntu 20.04 LTS 具有相同的行为,因此我假设对其中一个有效的方法对两者都有效。(可能与 ILS 有关,我不知道。)

答案1

您的代码没问题!变量中有空格,因此 echo 中也会有空格。因此,如果您想使用包含空格的参数,则必须像您所做的那样将其放在引号中。

例子:

command "${variable1}" "${variable2}"

答案2

如果期望输出是

"/mnt/g/directory with spaces in name"

你需要的代码是

drive=/mnt/g; export drive
mydir="\"$drive/directory with spaces in name\""
echo "$mydir"

相关内容