我和一个新手一样多,而且必须完成我的第一个大任务。不幸的是,我迷路了。谁能告诉我我做错了什么?显示菜单case语句,然后显示函数中的echo,但它不会被执行,然后跳回菜单。谢谢!
#! /bin/bash
adauga() {
printf "Introduceti un numar"
read numar1
printf "Introduceti alt numar"
read numar2
more
let suma=$numar1+$numar2
printf "$numar1 + $numar2 = $suma"
}
factorial () {
n=0
nr=0
fact=1
echo -n "Introduceti numarul: n= "
read n
more
nr=$n
while [ $n -ge 1]
do
fact=`expr $fact \* $n`
n=`expr $n - 1`
done
echo "Factorialul numarului $nr este $fact"
}
conversie () {
n=0
hex=0
echo -n "Introduceti numarul in baza 10: n= "
read n
hex=`echo "obase=16;ibase=10; $n" | bc`
echo "$n in baza 10 este echivalent cu \"$hex\" in baza 16"
return
}
while :
do
clear
echo " meniu"
echo "1. Adunarea a 2 numere"
echo "2. Determinarea factorialului unui numar"
echo "3. Convertirea unui umar din baza 10 in aza 16"
echo "4. Exit"
echo -n "introduceti una din optiunile [1 - 4]"
read opt
$opt in
1) adauga ;;
2) factorial;;
3) conversie;;
4) echo "La revedere $USER";
exit 1;;
*) echo "$opt este o optiune invalida.";
echo "Tasteaza enter pentru a continua .";
read enterKey;;
esac
done
答案 0 :(得分:1)
我没有看到你的esac的案例关键字..我很抱歉,如果我误读它..我在移动设备
案例... esac语句语法如下:
case word in
pattern1)
# Statement(s) to be executed if pattern1 matches
;;
pattern2)
# Statement(s) to be executed if pattern2 matches
;;
pattern3)
# Statement(s) to be executed if pattern3 matches
;;
esac
答案 1 :(得分:1)
有三个主要问题:
case
个关键字。]
之前缺少空格。 以下是突出显示并修复了这些问题的脚本:
#! /bin/bash
adauga() {
printf "Introduceti un numar"
read numar1
printf "Introduceti alt numar"
read numar2
more
let suma=$numar1+$numar2
printf "$numar1 + $numar2 = $suma"
}
factorial () {
n=0
nr=0
fact=1
echo -n "Introduceti numarul: n= "
read n
more
nr=$n
while [ $n -ge 1 ] # Added space here
do
fact=`expr $fact \* $n`
n=`expr $n - 1`
done
echo "Factorialul numarului $nr este $fact"
}
conversie () {
n=0
hex=0
echo -n "Introduceti numarul in baza 10: n= "
read n
hex=`echo "obase=16;ibase=10; $n" | bc`
echo "$n in baza 10 este echivalent cu \"$hex\" in baza 16"
return
}
while :
do
# Removed 'clear' here to avoid clearing output
echo " meniu"
echo "1. Adunarea a 2 numere"
echo "2. Determinarea factorialului unui numar"
echo "3. Convertirea unui umar din baza 10 in aza 16"
echo "4. Exit"
echo -n "introduceti una din optiunile [1 - 4]"
read opt
case $opt in # Added 'case' here
1) adauga ;;
2) factorial;;
3) conversie;;
4) echo "La revedere $USER";
exit 1;;
*) echo "$opt este o optiune invalida.";
echo "Tasteaza enter pentru a continua .";
read enterKey;;
esac
done