我有此代码,但无法指出错误。这是一个打印用户给出的数字表的简单程序。
以下是代码:
#a function to calculate the table
call()
{
#to check if it is in function
echo "in function"
#read from user a no whose table is to print
read num
#taking counter
i=0
echo "going in loop"
while [ $i -lt 10 ]
do
echo "in loop"
#incrementing the counter
i=$(( $i + 1 ))
#s= i + sa
s=$(($i * $num))
##printing the value of num
echo "\t$num * $i =$s"
done
return 0
}
while [ 1 ]
do
echo "in main "
#calling the function call()
echo "caliing call"
call()
#asking user to continue or not
echo "COntinue.. or not [0/1] "
read ch
if [ $ch -eq 0 ]
then
{}
else
exit
fi
done
输出如下
nik-pc@nik:~$ sh cd.sh
in main
caliing call
12
nik-pc@nik:~$
答案1
在 中bash
,要调用(引用)一个函数只需使用函数的名称,()
而不被使用。
因此改为call()
仅call
引用名为 的定义函数call
。
请注意,您仍然需要()
在函数声明时。
例如,声明如下:
foobar () { .... ;}
引用时:
foobar
在sh
( dash
) 中,引用call()
将被默默忽略而不会引发错误,并且 shell 将直接转到脚本的下一行。
此外,除非您确定,否则最好bash
运行这些脚本以避免意外。
另外,您的代码中还有许多可以改进的地方,这超出了本问题的范围。