6 linux bash shell ksh function
在下面非常简单的ksh脚本示例中,我需要询问func1结果是否等于4,
这就是我在示例中所做的,但是这个脚本不会像我预期的那样打印"function result = 4".
我需要在[[......]]中更改以打印"function result = 4"
备注 - func1必须在[[.....]]中
#!/bin/ksh
func1()
{
return 4
}
[[ ` func1 ` = ` echo $? ` ]] && print "function result = 4"
Run Code Online (Sandbox Code Playgroud)
she*_*ter 12
你需要
#!/bin/ksh
func1()
{
print -- 4
}
[[ $(func1) = 4 ]] && print "function result = 4"
Run Code Online (Sandbox Code Playgroud)
要么
#!/bin/ksh
func1()
{
return 4
}
func1 ; [[ $? == 4 ]] && print "function result = 4"
Run Code Online (Sandbox Code Playgroud)
您提供的代码中存在几个问题,因此让我试着解释一下(您使它变得比它需要的更复杂).
第1号是您使用反向命令替换命令,自1995年以来,这些已被ksh语言弃用!使用$(... cmd)进行现代cmd替换.我们经常将反引号列为对可移植性的一种认可,但只有为Bourne shell是唯一可用shell的系统编写的脚本才需要使用反引号.(好吧,我不知道破折号或灰,所以也许那些).
没有2.那是$?在执行函数或命令或管道之后得到设置,并且是最后一个命令的返回码.它是0-255之间的值.当你有代码时cmd ; rc=$? ; echo $?; 你现在正在回应分配的状态rc=$?(几乎总是为0),这就是为什么你会看到有经验的脚本保存$的价值?在做任何其他事情之前.
回想一下,命令替换使用了$( ... cmd ...)或者封闭命令封闭命令的输出,同时return设置了值$?(直到下一个命令执行重置该值).
我希望这有帮助.
| 归档时间: |
|
| 查看次数: |
27994 次 |
| 最近记录: |