尝试了解如何使用 IFS

尝试了解如何使用 IFS

我试图了解如何使用 shell 变量IFS。我有以下代码:

#!/bin/bash

ourpath=$PATH
oldIFS=$IFS
IFS=":"
echo "ourpath = $ourpath"
for directory in "$ourpath"; do
    echo "directory = $directory"
done

IFS=$oldIFS

使用收益运行它bash test.sh

ourpath = ~/bin:/home/<user>/anaconda3/bin:/home/<user>/.local/bin:/home/<user>/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:~/scripts
directory = ~/bin:/home/<user>/anaconda3/bin:/home/<user>/.local/bin:/home/<user>/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:~/scripts

但我希望directory循环遍历目录,$PATH因为它应该被:.这里出了什么问题?

答案1

这与空格完全相同:您已引用$ourpath并且它不会被拆分。如果删除引号,它将为您提供所需的结果。

IE:

for directory in $ourpath ; do
    echo "directory = $directory"
done

$ourpath加分点:如果包含空格并不重要,因为IFS:,所以它只会被分割:

相关内容