IFS 不工作

IFS 不工作

为什么 $PARTS 为空

DIR=/Users/ishandutta2007/Projects/yo
IFS='/' read -ra PARTS <<< "$DIR"
echo $PARTS

编辑:感谢您提出替代方法,但我希望通过 IFS 解决问题

答案1

数组不是空的,$PARTS会扩展到数组的第一个元素,该元素恰好为空,并且与以下内容相同${PARTS[0]}

$ declare -p PARTS
declare -a PARTS=([0]="" [1]="Users" [2]="ishandutta2007" [3]="Projects" [4]="yo")

要将所有数组元素打印为单独的单词,请使用"${PARTS[@]}"

$ printf '%s\n' "${PARTS[@]}"

Users
ishandutta2007
Projects
yo

要获取最后一个元素,您可以使用负索引:

$ echo "${PARTS[-1]}"
yo

但使用 a 更容易获取最后一个元素参数扩展

$ echo "${DIR##*/}"
yo

*/这会从 中删除最长的前缀模式DIR

相关内容