如何在bash中找到可用的可执行文件

fro*_*odo 0 bash

我编写了这个小脚本来查找作为参数传递的可执行文件,例如

./testexec du ls md 
Run Code Online (Sandbox Code Playgroud)

如何让脚本不输出未找到的命令 - 例如,不显示"md"命令的错误输出?

  #!/bin/sh

    for filename in "$@"
    do
    which $filename
    done
Run Code Online (Sandbox Code Playgroud)

jor*_*anm 6

如果您使用bash,则应使用内置"类型"而不是外部实用程序"which".如果找不到命令,type命令将返回非零退出状态,这使得它可以很容易地与条件一起使用.

for filename in "$@"; do
   if type -P "$filename" >/dev/null; then
       echo "found in PATH: $filename"
   fi
done
Run Code Online (Sandbox Code Playgroud)