Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如何防止 Bash 在子字符串中拆分单词?这是一个有点人为的例子来说明这个问题:
touch file1 'foo bar' FILES="file1 'foo bar'" ls -la $FILES
是否可以通过 $FILES 中的 ls 命令将 'foo bar' 视为单个字符串,这将有效地导致与以下命令相同的行为?
ls -la file1 'foo bar'
使用数组:
files=( file1 'foo bar' ) ls -la "${files[@]}"
kojiro 的阵列解决方案是这里的最佳选择。只是为了提供另一个选项,您可以FILES使用与空格不同的字段分隔符存储文件列表并设置IFS为该字段分隔符
FILES
IFS
OLDIFS=$IFS FILES="file1:foo bar" IFS=':'; ls -la $FILES IFS=$OLDIFS