Shell 使用getopts的正确方法

Shell 使用getopts的正确方法,shell,getopts,Shell,Getopts,执行以下脚本会导致mkdir命令出错 错误: ./test.sh: line 15: mkdir: command not found 这个脚本出了什么问题?您的问题实际上与getopts无关 问题是第一行: PATH=/root 或者,如果已执行,则此行: PATH=/home 这将命令的搜索路径设置为仅/root或/home目录。(通常这两个目录都不包含任何命令) 设置$PATH会丢弃上一个值mkdir可能在/bin中,但由于/bin不再在$PATH中,shell无法找到它 在geto

执行以下脚本会导致mkdir命令出错

错误:

./test.sh: line 15: mkdir: command not found

这个脚本出了什么问题?

您的问题实际上与
getopts
无关

问题是第一行:

PATH=/root
或者,如果已执行,则此行:

PATH=/home
这将命令的搜索路径设置为仅
/root
/home
目录。(通常这两个目录都不包含任何命令)

设置
$PATH
会丢弃上一个值
mkdir
可能在
/bin
中,但由于
/bin
不再在
$PATH
中,shell无法找到它

getopts
命令上不会出现错误,因为它内置在您正在使用的shell中

如果要将
/root
添加到
$PATH
,请使用:

PATH="/root:$PATH"

但是脚本中似乎没有任何内容依赖于在
$PATH
中具有
/root
。首先,您为什么要执行
PATH=/root
?如果试图将当前工作目录设置为
/root
/home
,则需要
chdir
命令

PATH="/root:$PATH"
PATH="$PATH:/root"