我尝试处理目录名称中的空格。例如:
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"