受到这个答案的启发:当我type -p
在命令提示符下运行时,它会可靠地告诉我命令是否存在的路径:
pi@raspberrypi:~ $ type -p less
/usr/bin/less
pi@raspberrypi:~ $ type -p asdf
pi@raspberrypi:~ $
Run Code Online (Sandbox Code Playgroud)
但是,当在脚本中使用时,-p
参数就好像被解释为自身的命令。该命令似乎忽略了它作为其选项,因为结果中type
总是存在一些流氓文本。-p not found
它破坏了脚本的其余部分:
#!/usr/bin/sh
main() {
for mycommand in $1; do
echo Checking $mycommand
loc="$(type -p "$mycommand")"
echo $loc
if ! [ -f "$loc" ]; then
echo I think I am missing $mycommand
fi
done
}
main "less asdf"
Run Code Online (Sandbox Code Playgroud)
脚本的输出:
Checking less
-p: not found less is /usr/bin/less
I think I am missing less
Checking …
Run Code Online (Sandbox Code Playgroud)