shell脚本返回值问题的解决
如果学习过⾼级语⾔⽐如java和c语⾔等,此时你要是获取⼀个函数的返回值,直接在函数⾥⾯写上return即可,然后在函数执⾏时将返回结果赋值给某个变量即可。但是在shell脚本中限制较多,因此如果我们想实现这样的功能的话,稍微困难⼀些,本⼈在实践中做了⼀些该⽅⾯的实验,并做笔记分享。
shell脚本的返回值可以使⽤return参数,但是return只能返回整数类型的值。因此实现⽐较复杂的功能的话shell脚本可能不太友好。
⽐如下⾯这个例⼦:
#!/bin/bash
function in_path(){
cmd=$1
path=$2
oldIFS=$IFS
IFS=":"
retval=1
for directory in $path
do
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=$1
path=$2
oldIFS=$IFS
IFS=":"
shell脚本返回执行结果retval=1
for directory in $path
do
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"
else
echo "no no no"
fi
这也是⼀种实现获取返回值结果的功能,还是挺好⽤的。但是如果你要是把if语句替换成case语句使⽤的话,那么函数中的echo语句和return语句返回的这个逻辑要明⽩的,和return不⼀样的,⽐如:
到此这篇关于shell脚本返回值问题的解决的⽂章就介绍到这了,更多相关shell脚本返回值内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论