echo $PATH
我得到了这个:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
我想要的是以下列格式获取这些内容:
/usr/local/sbin
/usr/local/bin
...
我试图做的事情:
i=1;
for dir in `echo $PATH|cut -d ':' -f $i`
do
echo $dir
i=`expr $i + 1`
done
但它不起作用。有人可以帮我解答一下吗?
答案 0 :(得分:3)
tr
救援:
echo "$PATH" | tr : '\n'
答案 1 :(得分:1)
这样的事情:
old_IFS=$IFS
IFS=:
set -- $PATH
while [ $# -gt 0 ]; do
echo $1;
shift;
done
IFS=$old_IFS
答案 2 :(得分:0)
你应该这样做:
i=0
echo "$PATH" | awk 'BEGIN{RS=":"}{printf "%s\0",$0}'| while read -rd '' line
do
echo "$line"; # or do something else with it?
i=`expr $i + 1`
done
这将处理路径变量中的非标准文件夹,如
/usr/local folder
& /usr/new/continued/in/next/line
folder
等等。
您也可以使用tr
代替awk
,但将\n
替换为\0
,如下所示:
echo "$PATH" | tr : '\0' | while ...