shell 脚本中空格字符串变量作为命令参数

shell 脚本中空格字符串变量作为命令参数

如何将空格字符串存储在变量中并将其用作 shell 脚本中的命令参数?

这就是我想做的事情:

DESTINATION='/mnt/External Harddisk'
FILE_NAME=$DESTINATION/home.tar.gz
INCREMENTAL=$DESTINATION/home.snar

tar -zcvpf $FILE_NAME \
--directory=/home \
--listed-incremental=$INCREMENTAL \
--exclude=.gvfs \
--exclude=.cache* \
--exclude=*/[Cc]ache* \
--exclude=.thumbnails* \
--exclude=*/[Tt]rash* \
--exclude=*~ \
--exclude=.dropbox* \
--exclude=*.vdi \
--exclude=*VirtualBox*VMs* \
.

答案1

这个答案可能涵盖了它Linux 环境变量中的空格?

将环境变量放在双引号中。以下示例演示了这一点

我正在执行的操作ls 'asdf asdf'是,对文件名中带有空格的文件“adsf asdf”执行 ls。我想用变量来执行此操作。您会看到,使用双引号会得到结果。如果没有引号,它会将空格视为特殊字符,并查找文件 asdf 两次。使用单引号时,ls '$f'它会查找文字美元 f。但使用双引号时ls "$f"它可以工作,即给出与相同的结果ls 'asdf asdf'

$ ls 'asdf asdf' <ENTER>
ls: cannot access asdf asdf: No such file or directory

$ export f='asdf asdf' <ENTER>

$ echo $f <ENTER>
asdf asdf

$ ls $f <ENTER>
ls: cannot access asdf: No such file or directory
ls: cannot access asdf: No such file or directory

$ echo $f <ENTER>
asdf asdf

$ ls '$f' <ENTER>
ls: cannot access $f: No such file or directory


$ ls "$f" <ENTER>
ls: cannot access asdf asdf: No such file or directory

答案2

在任何空格字符前面添加转义字符串,这样空格在字符串中将显示为 '\ '(反斜杠 + 空格)。希望对您有所帮助。

相关内容