我是shell脚本新手。如果用户输入1,2,3,4 ... 9(小于10),我的目的是打印01,02,03 ... 09之类的数字。我编写了下面的代码,但是lst行打印的值只有一位数。
issuehour()
{
issue_hour="$1";
if [ $issue_hour -lt 10 ] then
h="0"$issue_hour
return $h
else
#echo "less than 10"
return "$1"
fi
}
echo "enter hour"
read hour
hr=$(issuehour "$hour")
echo "after calling function:-" $hr
答案 0 :(得分:1)
bash中的return语句退出代码的同义词,范围为0 - 255.
"回声"用于返回值/输出函数的值。这应该由调用函数使用$( )
捕获,类似于您使用过的hr=$(issuehour "$hour")
。
回到你的问题,没有echo语句,函数没有向调用函数返回任何值,这解释了为什么你没有得到所需的输出。但是,由于您使用了" return",这将被视为功能'的' 返回代码。要验证这一点,请尝试:
function issuehour()
{
issue_hour="$1";
if [[ $issue_hour -lt 10 ]]
then
h="0"$issue_hour
return $h
else
#echo "less than 10"
return "$1"
fi
}
echo "enter hour"
read hour
hr=$(issuehour "$hour")
echo $?
这将得到您正在寻找的相同结果。
P.S:最好遵循使用" echo"的传统方法。返回函数的值和"返回"声明"返回代码"
答案 1 :(得分:0)
只需将printf
与0
填充一起使用:
printf "%02d\n" 1
01
printf "%02d\n" 2
02
printf "%02d\n" 9
09
printf "%02d\n" 10
10
答案 2 :(得分:0)
您可以使用以下代码。
issuehour()
{
issue_hour="$1";
if [ $issue_hour -lt 10 ] ;then
h="0"$issue_hour
echo $h
else
#echo "less than 10"
echo "$1"
fi
}
echo "enter hour"
read hour
hr=$(issuehour "$hour")
echo "after calling function:-" $hr
return命令将返回函数的退出状态,而不是使用echo命令。
[root@server1 tmp]# bash new
enter hour
10
after calling function:- 10
[root@server1 tmp]# bash new
enter hour
1
after calling function:- 01