shell列表_Shell编程:命令列表和
在上⼀检测软件包是否安装的脚本中,有⽹友私信,下⾯这条命令到底是什么意思
rpm -q openssh --quiet && is_install=0 || is_install=1
这条命令⽤到了shell脚本中命令列表,⽼规矩,先看⽂档:
⽂档中这样解释:
command1 && command2
shell命令属于什么语言command2 仅在 command1 返回码为0(也就是command1 执⾏成功)时才会被执⾏
command1 || command2
command2 仅在command1返回⾮0(也就是执⾏失败)时才会被执⾏
我们再来看⽹友问的这条命令
rpm -q openssh --quiet && is_install=0 || is_install=1
我们把这条命令分解如下,然后⼀⼀分析:
第⼀横框中 list command 1是⼀个与列表,根据⽂档解释,只有 rpm -q openssh --quiet 执⾏成功,那么 is_install=0 才会被执⾏。也就是说如果 检测到系统 安装有openssl 包,那么才会执⾏变量赋值is_i
nstall=0 。与列表执⾏成功。
实验1:
可以看到,不仅is_install=0被执⾏, rpm -q openssh --quiet && is_install=0 这个命令列表也执⾏成功了
当我们查询 ⼀个不存在的包时,rpm -q nopackage --quiet 执⾏失败,
rpm -q nopackage --quiet && is_install=0 这个命令列表也执⾏失败($? = 1),⽽且 is_install=0 未被执⾏(echo $is_install 返回空)。
第三个命令列表 list command 2 ,实际上 list command 1 和 cmd5 组成的⼀个或列表。也就是 list command1 失败时,才会⾏cmd5 ,也就是is_install =1
实验2:
实验 2的 list command 1执⾏失败,此时 或列表右边的is_install=1被执⾏
可见, is_install=0被执⾏,⽽is_install=1没有被执⾏
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论