如何将空格字符串存储在变量中并将其用作 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
在任何空格字符前面添加转义字符串,这样空格在字符串中将显示为 '\ '(反斜杠 + 空格)。希望对您有所帮助。