shell中返回值是1为真还是假_shell脚本返回值问题

如果学习过高级语言比如java和c语言等,此时你要是获取一个函数的返回值,直接在函数里面写上return即可,然后在函数执行时将返回结果赋值给某个变量即可。但是在shell脚本中限制较多,因此如果我们想实现这样的功能的话,稍微困难一些,本人在实践中做了一些该方面的实验,并做笔记分享。

shell脚本的返回值可以使用return参数,但是return只能返回整数类型的值。因此实现比较复杂的功能的话shell脚本可能不太友好。

比如下面这个例子:

#!/bin/bash

function in_path(){

cmd=$1path=$2oldIFS=$IFS

IFS=":"retval=1

for directory in$pathdo

if [ -x $directory/$cmd ];then

return 0

fi

done

IFS=$oldIFS

return 1

}in_path ls $PATH

if [ $? -eq 0 ];then

echo "yes"

else

echo "no"

fi

这个脚本实现的功能是在PATH环境变量中查找ls命令是否存在且可执行,如果是,就返回0,否则就返回1。返回0表示为真,此时if语句判断为真的话输出yes,为0的话输出no。

有时候希望实现的功能是返回一些其他类型的变量值,比如字符串等等,此时我们在shell脚本中就不能再使用return关键字了,可以这么写。

#!/bin/bash

function in_path(){

cmd=$1path=$2oldIFS=$IFS

IFS=":"retval=1

for directory in$pathdo

if [ -x $directory/$cmd ];then

echo yes

fi

done

IFS=$oldIFS

echo no

}

aa=$(in_path $1$PATH)if [[ $aa =~ "yes"]];then

echo"the path has this bianliang"

elseecho"no no no"fi

这也是一种实现获取返回值结果的功能,还是挺好用的。但是如果你要是把if语句替换成case语句使用的话,那么函数中的echo语句和return语句返回的这个逻辑要明白的,和return不一样的,比如:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值