首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将两个字符串变量与两个字符串进行比较,并在IF条件语句的and逻辑运算符中组合它们

如何将两个字符串变量与两个字符串进行比较,并在IF条件语句的and逻辑运算符中组合它们
EN

Stack Overflow用户
提问于 2021-02-08 20:11:20
回答 1查看 49关注 0票数 0

是的,我不敢相信我正在写这篇文章,但似乎我不能将一个变量与一个字符串进行比较,然后将第二个变量与另一个字符串进行比较,然后在IF语句的IF语句中将这些变量和(&&)子句组合成一个bash脚本。

我正试图在Linux Mint20,GNU bash版本5.0.16上做到这一点。在代码中,您将看到我尝试过的所有替代语句,但这些语句都不起作用。

该脚本需要ping我的Internet连接两次,如果在这两种情况下都有100%的数据包丢失,我需要启动一些bash命令{这里不包括}来重新连接连接。因此,这是一个无人值守重新连接互联网的脚本。

代码如下:

代码语言:javascript
复制
#!/bin/bash

# redirect *pint output to a text file
ping -q -c 8 8.8.8.8 > ~/bash/pingOut.txt

# get transfer loss percentage
lossPerc=$(awk '$5=="received," {print $6}' ~/bash/pingOut.txt)
echo "lossPerc is ${lossPerc}"

# read prev loss percentage
prevLossPerc=$(cat ~/bash/loss-perc.txt)
echo "prevLossPerc is ${prevLossPerc}"

# write latest loss percentage to file
echo "$lossPerc" > ~/bash/loss-perc.txt

#if [[ "$lossPerc" == '+8' ]] && [[ "$prevLostPerc" == '+8' ]] => NO
#if [ "$lossPerc" == '+8' ] && [ "$prevLostPerc" == '+8' ] => NO
#if [ "$lossPerc" = '+8' ] && [ "$prevLostPerc" = '+8' ] => no error but not working as expected ------- line 19 -----
#if [[ $lossPerc = '+8' ]] && [[ $prevLostPerc = '+8' ]] => NO
#if [[ $lossPerc = "+8" ]] && [[ $prevLostPerc = "+8" ]] => NO
#if [ $lossPerc = '+8' ] && [ $prevLostPerc = '+8' ] => NO
#if [ $lossPerc = "+8" ] && [ $prevLostPerc = "+8" ] => NO
#if [[ "$lossPerc" = '+8' && "$prevLostPerc" = '+8' ]] => NO
#if [[ "$lossPerc" == "+8" && "$prevLostPerc" == "+8" ]] => NO
#if [ "$lossPerc" = '+8' && "$prevLostPerc" = '+8' ] NO
then 
    echo "Now I need to do a number of things to reconnect my i-net connection!"
fi

所以基本上我尝试了所有的注释*if语句,除了一个之外,所有的语句都会在shell中给出错误。这些错误通常类似于[: =: unexpected operator[[: not found[: missing。在第19行,有一个语句{用额外的注释标记},它没有给出错误,但当条件为真时,它什么也不做,即它也不是正确的语句。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-08 20:18:19

使用bash重新匹配:

代码语言:javascript
复制
re='\+8'
[[ "$lossPerc" =~ $re ]] && [[ "$prevLostPerc" =~ $re ]]

或者甚至像这样:

代码语言:javascript
复制
re='\+8.*\+8'
[[ "$lossPerc$prevLostPerc" =~ $re ]]

如果case也是一个选项:

代码语言:javascript
复制
case "$lossPerc$prevLostPerc" in
      *'+8'*'+8'*) echo ok;;
esac
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66101391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档