9

如何防止 Bash 在子字符串中拆分单词?这是一个有点人为的例子来说明这个问题:

touch file1 'foo bar'
FILES="file1 'foo bar'"
ls -la $FILES

是否可以通过 $FILES 中的 ls 命令将 'foo bar' 视为单个字符串,这将有效地导致与以下命令相同的行为?

ls -la file1 'foo bar'
4

2 回答 2

16

使用数组:

files=( file1 'foo bar' )
ls -la "${files[@]}"
于 2013-06-14T20:18:54.387 回答
2

kojiro 的阵列解决方案是这里的最佳选择。只是为了提供另一个选项,您可以FILES使用与空格不同的字段分隔符存储文件列表并设置IFS为该字段分隔符

OLDIFS=$IFS
FILES="file1:foo bar"
IFS=':'; ls -la $FILES
IFS=$OLDIFS
于 2013-06-14T20:30:42.163 回答