関数の中に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
この場合は意図しません。