web-dev-qa-db-ja.com

ホイップテールとbash関数に関する質問

  • 私がこのスクリプトを持っているとしましょう:

    #!/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を実行する必要がありますか?

2
Lynob

基本的に(もちろん、Sudoを最も効果的に使用する方法に関する2番目の質問)、それは判断の問題です。

  • スクリプトでは、yumへの呼び出しが3つあります。スクリプトが最初にrootとして実行されているかどうかをテストし、Sudoがそれ自体を実行する場合は、スクリプトが単純になります。
  • 一方、rootとして排他的に実行すると、インタラクティブな部分をテストするのが安全でなくなるとコメントする人もいるかもしれません(スクリプトの開発と拡張を続けた場合は、パッケージ名を直接)。私自身の傾向は、スクリプトをテストするコマンドラインオプションを提供し、対応するコマンドを表示(またはログ)することです。実行します。

例えば:

  • whiptailがインストールされていない場合はどうなりますか?
  • if $choiceはWordではないため、caseステートメントで引用すると役立つ場合があります。
  • yumがエラーを報告した場合はどうなりますか(ユーザーはそれを確認しますか、それとも後でwhiptailへの別の呼び出しがありますか)?
1
Thomas Dickey