我从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
Run Code Online (Sandbox Code Playgroud)
上面有意地重复相同的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
Run Code Online (Sandbox Code Playgroud)
我得到了我想要的但我不明白为什么第二次调用PATH =会产生上述错误.我错过了什么?
PATH是一个系统变量,bashshell用于查找二进制文件(例如cut)的位置.
所以,直到:
PATH=$(echo $ST | cut -d'/' -f4-)
Run Code Online (Sandbox Code Playgroud)
事情按预期工作.但是,命令替换即后$(...),PATH指向一个非标准的目录下的bash找不到标准的二进制文件.
所以后续命令:
PATH=$(echo $ST | cut -d'/' -f4-)
Run Code Online (Sandbox Code Playgroud)
给你错误:
./nn.sh: line 9: cut: command not found
Run Code Online (Sandbox Code Playgroud)
道德
切勿对脚本使用大写变量,因为它们是为系统保留的.