如何防止Bash在子字符串中拆分单词? 这是一个有点人为的例子来说明问题:
touch file1 'foo bar'
FILES="file1 'foo bar'"
ls -la $FILES
是否有可能通过$ FILES中的ls命令将'foo bar'视为单个字符串,这将导致与以下命令相同的行为?
ls -la file1 'foo bar'
答案 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