嗨,这个问题让我很困惑。下面的 bash 代码给出了正确的输出,但略有不同。
names="fred bob harry george"
for i in $names
do
echo $i
done
除了我想在目录路径中使用输出之外,这很好,问题是列表中的第一个项目弗雷德变成弗雷德带有空格(_),那么我的脚本就会失败。
有没有办法只获取 $i 中不带空格的名称?
答案1
如果您尝试对for
包含空格的文件名进行循环。问题是空格是分隔符。
循环for
使用$IFS
变量作为字段分隔符,默认情况下设置为空格字符。
为了避免此问题,您可以执行类似以下操作:
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for i in $names
do
echo "$i"
done
IFS=$SAVEIFS
有关详细信息,请参阅文章 BASH Shell:带空格的循环文件名。