小编fle*_*tes的帖子

检查命令是否存在重新访问

受到这个答案的启发:当我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)

posix raspberry-pi

4
推荐指数
1
解决办法
4672
查看次数

标签 统计

posix ×1

raspberry-pi ×1