shell脚本中变量的范围



我是新来的外壳脚本。我的目的是打印数字,例如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"的常规方法返回函数的值和"返回"语句的"返回代码"

只需使用printf0填充:

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

相关内容

  • 没有找到相关文章

最新更新