if-elseステートメントまたは関数内のコマンド?

if-elseステートメントまたは関数内のコマンド?

関数の中にif-elseがありますか?

ここにメニューがあります。

以下のコードをご覧ください。

#!/bin/bash

#Main Menu

function p_enter
{
    echo ""
    echo -n "Press Enter to continue"
    read
    clear
}

function df1
{
read var
if [ $var = "1" ]
 then
 echo "nice"
 else
 echo "not bad"
 fi
   }



    select=
    until [ "$select" = "0" ]; do
        echo ""
        echo "MAIN MENU"
        echo "1 - XML DATA REPORT"
        echo "2 - SOON "
        echo ""
        echo "0 - exit"
        echo ""
        echo -n "Enter sleection: "
        read select
        echo ""

    case $select in
            1 ) df1 ; press_enter ;;
            2 ) free ; press_enter ;;
            3 ) exit ;;
            * ) echo "nvalid entry"; press_enter
     esac
     done

ヒントや提案がありますか?

答え1

はい、シェル関数は if/else 文を使用できます。

#!/bin/bash

function comment_on_val {
    local the_reply="$1"
    local the_word="$2"

    if (( the_reply == 1 )); then
        echo "The value is one ($the_word)"
    else
        echo "The value isn't one ($the_word)"
    fi
}

echo "Menu:"
select word in "Yes" "No" "Exit"; do
    case "$REPLY" in
        3) break    ;;
        *) comment_on_val "$REPLY" "$word"   ;;
    esac
done

local私が関数で使用する唯一の理由は、これら2つの変数のローカルスコープを提供するためです。これを行わないと、呼び出し後にスクリプト本体に存在しますが、comment_on_valこの場合は意図しません。

関連情報