防止子字符串中的Bash单词拆分

时间:2013-06-14 20:15:04

标签: linux bash shell

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

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

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

ls -la file1 'foo bar'

2 个答案:

答案 0 :(得分:14)

使用数组:

files=( file1 'foo bar' )
ls -la "${files[@]}"

答案 1 :(得分:2)

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

OLDIFS=$IFS
FILES="file1:foo bar"
IFS=':'; ls -la $FILES
IFS=$OLDIFS