从字符串变量获取输出并删除空格

从字符串变量获取输出并删除空格

嗨,这个问题让我很困惑。下面的 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:带空格的循环文件名

相关内容