私がこのスクリプトを持っているとしましょう:
#!/bin/bash
function cpp-lang {
yum install "Development Tools"
}
function updatesys {
yum -y update
yum -y upgrade
}
whiptail --checklist "test" 5 40 5\
Update "Update the system" on \
C++ "Install C++" off 2>results
while read choice
do
case $choice in
Update )updatesys
;;
C++)cpp-lang
;;
*)
;;
esac
done < results
実行すると終了しますが、関数から何かを返す必要がありますか?
上記のスクリプトを例として考えると、yum install
を呼び出すたびに、またはSudo ./script.sh
を十分に実行するたびに、Sudo
を実行する必要がありますか?
基本的に(もちろん、Sudo
を最も効果的に使用する方法に関する2番目の質問)、それは判断の問題です。
yum
への呼び出しが3つあります。スクリプトが最初にroot
として実行されているかどうかをテストし、Sudoがそれ自体を実行する場合は、スクリプトが単純になります。root
として排他的に実行すると、インタラクティブな部分をテストするのが安全でなくなるとコメントする人もいるかもしれません(スクリプトの開発と拡張を続けた場合は、パッケージ名を直接)。私自身の傾向は、スクリプトをテストするコマンドラインオプションを提供し、対応するコマンドを表示(またはログ)することです。実行します。例えば:
whiptail
がインストールされていない場合はどうなりますか?$choice
はWordではないため、case
ステートメントで引用すると役立つ場合があります。whiptail
への別の呼び出しがありますか)?