我从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 =会产生上述错误。我错过了什么?
答案 0 :(得分:8)
PATH
是bash
shell用于查找位置的系统变量
您的二进制文件(例如cut
)是。
所以,直到:
PATH=$(echo $ST | cut -d'/' -f4-)
事情按预期工作。但是在命令替换即$(...)
之后,PATH
指向一个非标准目录,其中bash找不到标准二进制文件。
所以后续命令:
PATH=$(echo $ST | cut -d'/' -f4-)
给了你错误:
./nn.sh: line 9: cut: command not found
<强>道德强>
永远不要为脚本使用大写变量,因为它们是为系统保留的。