我是新来的外壳脚本。我的目的是打印数字,例如01,02,03 ... 09如果用户输入1,2,3,4 ... 9(少于10)。我写了以下代码,但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
bash中的返回语句是退出代码的同义词,范围为0-255。
" echo"用于返回值/输出函数的值。使用$( )
类似于您使用过的hr=$(issuehour "$hour")
,应通过调用函数捕获这一点。
在没有回声语句的情况下来到您的问题,该函数没有向调用功能返回任何值,这解释了为什么您没有获得所需的输出。但是,由于您使用了"返回",因此可以被视为函数'的'返回代码。要验证这一点,请尝试:
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"的常规方法返回函数的值和"返回"语句的"返回代码"
只需使用printf
与0
填充:
printf "%02dn" 1
01
printf "%02dn" 2
02
printf "%02dn" 9
09
printf "%02dn" 10
10
您可以使用以下代码。
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
返回命令将返回函数的退出状态,而是可以使用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