linux传参数用什么命令,Linux中命令回传值$?详解

? 是一个特殊变量。这个变量代表的是上一个命令的回传值。也就是说,当我们运行某些命令的时候,这些命令都会回传一个运行后的代码。一般情况下,如果成功运行该命令,则回传值为0,如果运行过程中出现错误,就会回传错误代码(这个代码就是表示在该命令下出现错误的原因)。一般是一个非0数字。

我们知道,在shell中调用变量需要在变量前面加上 $。这也就是我们在以后的例子中用到的$?。

例一

# test –e /tmp/a.txt; echo $?

0   // /tmp/a.txt 存在,所以回传值为0

就拿例一来说,如果/tmp/a.txt不存在,那结果就是非0了。如果我们实际运行上述命令的话,我们会发现如果/tmp/a.txt不存在,回传值为1。

下面我们看另一个关于 $? 的例子

例二

# echo ‘onmpw’

onmpw           //命令正常运行

# echo $?

0          //输出结果为0

# 1name=onmpw

-bash: 1name=onmpw: command not found   //命令运行错误

# echo $?

127          //输出结果为127 一个非0数字,说明上一个命令运行出现错误

# echo $?

0            // 运行结果又为0 出现这种情况是因为 ?表示的是【上一个命令】的回传值,

// 我们看,它的上一个命令是不是 echo $? 。这个命令是正确执行的,输出//了127 所以我们在下一次的结果中会回传0。

好,介绍完$?以后,我们看一下它主要用于什么地方。我们知道,在linux中两个命令之间是有想依赖性的。而这个依赖性最主要的是前一个命令的结果是否正确。这时需要用到的就是上面我们说的命令回传值了。当然,除了命令回传值我们还需要借助 && 和 || 来帮忙。

看下面的例子

例三

# test –e /tmp/a.txt && echo ‘Yes’ || echo ‘No’

Yes       //因为/tmp/a.txt存在,所以结果为Yes

因为/tmp/a.txt 存在 所以第一个命令正常运行,所以 &&(与)会继续向后执行下一个命令输出Yes,而echo  ‘Yes’ 这个命令也正确执行,所以 ||(或)前面的结果都正确,就不再向后执行了。

&& 两边的表达式只要有一个错误整体就返回错误值。如果前面的为错误,那整体就被认为是错误的了,后面的命令就不再执行。如果前面的正确执行,那就会去执行后面的命令。

||  两边的表达式只要有一个正确,整体就返回正确值。如果前面的命令正确执行,就不再向后执行后面的命令了。

例三中 /tmp/a.txt存在,我们换成一个不存在的文件 /tmp/b.txt

例四

# test –e /tmp/b.txt && echo “Yes” || echo “No”

No       //结果输出 No

因为 /tmp/b.txt不存在,所以说第一个命令返回错误值。因此 &&整体就是错误的。但是对于||其前面的返回值是错误的,所以会继续执行后面的命令,因此要输出 No。

上面文字有些啰嗦,其实对于 && 和 || 我们学过其它编程语言的话,对这两个很容易理解。本篇主要介绍的是 $? 这个特殊的变量。因为这在shell脚本编程中经常遇到。希望本文对大家有所帮助。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值