pot*_*day 6 command-line bash scripts
我想使用 bash 脚本检查是否安装了两个或多个程序:
hash foo &> /dev/null
if [ $? -eq 1 ]; then
echo >&2 "foo not found."
else
echo "foo found"
fi
Run Code Online (Sandbox Code Playgroud)
上面的脚本适用于单个程序,我想检查系统中安装的多个程序。我怎样才能做到这一点?
如果要检查所有这些都已安装,只需执行以下操作:
hash foo bar baz &>/dev/null &&
echo "All programs installed" ||
echo "At least one program is missing"
Run Code Online (Sandbox Code Playgroud)
该&>重定向标准错误和标准输出/dev/null,所以你不打印的输出hash。2>据我所知,您可能只需要hash打印到标准错误,但我们最好还是安全一点。
这&&意味着只有在前一个命令成功时才会运行下一个命令。这||意味着只有在前一个命令失败时才会运行下一个命令。因此,如果您检查的三个(或 N 个)程序之一未安装,您将收到错误消息。
如果您想被告知未安装哪个程序,请改用以下程序:
for p in foo bar baz; do
hash "$p" &>/dev/null && echo "$p is installed" ||
echo "$p is not installed"
done
Run Code Online (Sandbox Code Playgroud)
最后,对于更细粒度的控制和详细的输出,您可以执行以下操作:
i=0; n=0; progs=(foo bar baz);
for p in "${progs[@]}"; do
if hash "$p" &>/dev/null
then
echo "$p is installed"
let c++
else
echo "$p is not installed"
let n++
fi
done
printf "%d of %d programs were installed.\n" "$i" "${#progs[@]}"
printf "%d of %d programs were missing\n" "$n" "${#progs[@]}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2863 次 |
| 最近记录: |