使用cut和sed(cut:command not found)这个bash脚本有什么问题?

时间:2016-06-30 02:03:24

标签: bash

我从bash中的NFS位置获取服务器和路径,如下所示:

#!/bin/bash

ST="/net/10.111.111.111/path/to/some/dir"
echo $ST
SERVER=$(echo $ST | cut -d'/' -f3)
echo $SERVER
PATH=$(echo $ST | cut -d'/' -f4-)
echo $PATH
PATH=$(echo $ST | cut -d'/' -f4-)
echo $PATH

以上重复相同的2行。输出是:

/net/10.111.111.111/path/to/some/dir
10.111.111.111
path/to/some/dir
./nn.sh: line 9: cut: command not found

我得到了我想要的但我不明白为什么第二次调用PATH =会产生上述错误。我错过了什么?

1 个答案:

答案 0 :(得分:8)

PATHbash shell用于查找位置的系统变量 您的二进制文件(例如cut)是。

所以,直到:

PATH=$(echo $ST | cut -d'/' -f4-)

事情按预期工作。但是在命令替换即$(...)之后,PATH指向一个非标准目录,其中bash找不到标准二进制文件。

所以后续命令:

PATH=$(echo $ST | cut -d'/' -f4-)

给了你错误:

./nn.sh: line 9: cut: command not found

<强>道德

永远不要为脚本使用大写变量,因为它们是为系统保留的。