Linux-shell之判断大小

实战1: 输入2个整数,判断大小

三种方式实现:

1  定义变量          2  脚本传参             3 read读入

第一步,给用户提示,让其输入整数

第二步,判断第一个值和第二个值不为空

第三步,判断两个数为整数

第四步,第一个值与第二个值对比

 [[email protected] scripts]# cat test21.sh 
#!/bin/bash
cat <<EOF
  1-10...   zhengshu
EOF
read -p "panduan daxiao:" a b
[ ${#a} -eq 0 ]&&{
      echo "diyigecanshu"
      exit 1
}
[ ${#b} -eq 0 ]&&{
      echo "diergecanshu"
      exit 1
}

expr $a + 1 &>/dev/null
RE_A=$?
expr $b + 1 &>/dev/null
RE_B=$?
if [ $RE_A -ne 0 -o $RE_B -ne 0 ]
  then
      echo "one of you input is not int"
      exit 1
fi
 
if [ $a -eq $b ]; 
      then
      echo "$a = $b"
  elif [ $a -gt $b ]
      then
      echo "$a > $b"
  else
      echo "$a < $b"
fi 
[[email protected] scripts]# sh test2
test20.sh  test21.sh  test2.sh   
[[email protected] scripts]# sh test21.sh 
  1-10...   zhengshu
panduan daxiao:e e
one of you input is not int
[[email protected] scripts]# sh test21.sh 
  1-10...   zhengshu
panduan daxiao:2 34
2 < 34
[[email protected] scripts]# sh test21.sh 
  1-10...   zhengshu
panduan daxiao:3 3
3 = 3
[[email protected] scripts]#

脚本传参方式实现

我这里是对上面进行了改变。进到vim里面

%s#$a#$1#g       %s#$b#$2#g    在删除几行,就实现了脚本传参的方式

 [[email protected] scripts]# cat test22.sh 
#!/bin/bash
[ ${#1} -eq 0 ]&&{
      echo "diyigecanshu"
      exit 1
}
[ ${#2} -eq 0 ]&&{
      echo "diergecanshu"
      exit 1
}

expr $1 + 1 &>/dev/null
RE_A=$?
expr $2 + 1 &>/dev/null
RE_B=$?
if [ $RE_A -ne 0 -o $RE_B -ne 0 ]
  then
      echo "one of you input is not int"
      exit 1
fi
 
if [ $1 -eq $2 ]; 
      then
      echo "$1 = $2"
  elif [ $1 -gt $2 ]
      then
      echo "$1 > $2"
  else
      echo "$1 < $2"
fi 
[[email protected] scripts]# sh test22.sh 3 d
one of you input is not int
[[email protected] scripts]# sh test22.sh 3 4
3 < 4
[[email protected] scripts]# sh test22.sh 3 3
3 = 3
[[email protected] scripts]#

定义变量的方式

这里我用以下命令替换了以下原有的变量,进行测试

 [[email protected] scripts]# sh test23.sh 
3 < 4
[[email protected] scripts]# sed -i "s#3#4#g" test23.sh 
[[email protected] scripts]# sh test23.sh 
4 = 4
[[email protected] scripts]# sed -i "s#4#dd#g" test23.sh 
[[email protected] scripts]# sh test23.sh 
one of you input is not int

[[email protected] scripts]# cat test23.sh 
#!/bin/bash
a=dd
b=dd
[ ${#a} -eq 0 ]&&{
      echo "diyigecanshu"
      exit 1
}
[ ${#b} -eq 0 ]&&{
      echo "diergecanshu"
      exit 1
}

expr $a + 1 &>/dev/null
RE_A=$?
expr $b + 1 &>/dev/null
RE_B=$?
if [ $RE_A -ne 0 -o $RE_B -ne 0 ]
  then
      echo "one of you input is not int"
      exit 1
fi

if [ $a -eq $b ]; 
      then
      echo "$a = $b"
  elif [ $a -gt $b ]
      then
      echo "$a > $b"
  else
      echo "$a < $b"
fi 
[[email protected] scripts]#
时间: 2024-11-10 04:18:37

Linux-shell之判断大小的相关文章

Linux shell脚本判断服务器网络是否可以上网

Linux shell脚本判断网络畅通 介绍 在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需要有个函数来判断服务器网络状态 我们可以通过curl来访问 www.baidu.com,从而判断服务器网络状态是否可以畅通的 网络状态判断 #!/bin/bash #检测网络链接畅通 function network() { #超时时间 local timeout=1 #目标网站 local target=www.baidu.com #获取响应状态码 local

linux shell IF判断时报not found错误解决方法

最近一个项目需要写一个linux shell脚本,在linux指定目录下遍历*.sql文件,如果有的话,执行文件(文件里面是一个update语句),在遍历文件夹时总是报一个[sql: not found的错误,差点崩溃了,后来才知道原因,特意给大家分享下,希望其他人少走弯路 原来if判断那块有个坑,if空格[空格$? -eq 0空格]; if后面加空格,条件两边也得加空格,以下是数字比较和字符串比较例子 ---------number if [ 1 -eq 2 ];then fi -------

L7.1 linux shell 条件判断与循环语句

bash脚本条件判断语句详细使用 条件判断的使用方法及其相关示例: 本文对bash中test语句,if判断语句(单分支,多分支)case语句详细说明,如下 条件测试:test 作用:Shell中的test命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. test使用语法 test EXPRESSION 也可以使用 :[ EXPRESSION ]:[[ EXPRESSION ]] 整数测试: 隐含着做数值大小比较,所以不要给变量引用加引用: $A -gt $B:是否大于:是

Linux shell if判断语句

无论什么编程语言都离不开条件判断.SHELL也不例外. 大体的格式如下: if list then do something here elif list then do another thing here else do something else here fi 一个例子: #!/bin/sh SYSTEM=`uname -s` # 获取操作系统类型,我本地是linux if [ $SYSTEM = "Linux" ] ; then # 如果是linux话输出linux字符串

linux shell 中判断语句

切记if和其中的[]都要加空格符 1.字符串判断 str1 = str2 当两个串有相同内容.长度时为真str1 != str2 当串str1和str2不等时为真-n str1 当串的长度大于0时为真(串非空)-z str1 当串的长度为0时为真(空串)str1    当串str1为非空时为真 2.数字的判断 int1 -eq int2 两数相等为真int1 -ne int2 两数不等为真int1 -gt int2 int1大于int2为真int1 -ge int2 int1大于等于int2为真

Linux shell 中判断一个变量是否为空 的方法

判断一个脚本中的变量是否为空,我写了一个这样的shell脚本: #!/bin/sh #filename: test.sh para1= if [ ! -n $para1 ]; then echo "IS NULL" else echo "NOT NULL" fi 然后把该脚本:test.sh通过chmod +x 改为可以执行的脚本,执行后输出的结果为: NOT NULL,很是奇怪,最后,通过查询一些资料发现,可以通过如下方式判断一个shell变量是否为空: 1. 变

【shell】Linux shell 之 判断用户输入的变量是否为数字

本文内容:判断用户输入的参数是否为数字 在shell中如何进行计算? 方式一 [[email protected] scripts]# echo $((1+2)) 3 方式二 [[email protected] scripts]# expr 2 + 3 5 [[email protected] scripts]# 注意:使用方式二的时候,要求必须要有间隔.如果使用的是乘法,号必须进行转义写为 \ [[email protected] scripts]# expr 2 * 3 expr: 语法错

Linux shell脚本 判断用户输入的文件类型

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 编写一个脚本,从键盘输入一个文件,判断它是否存在,如果存在就判断它是什么类型的文件:并用对应的颜色输出 脚本如下: #!/bin/bash #function:test file type

LINUX SHELL条件判断

算术运算的条件判断 [] [[]]: -eq -ne -lt -le -gt -ge (( )):><>=<== [[email protected] ~]# if (( 2 == 3));then echo '123'; fi [[email protected] ~]# if (( 2 >= 3));then echo '123'; fi [[email protected] ~]# if (( 2 <= 3));then echo '123'; fi 123[[e

Linux shell 命令判断执行语法 ; , &amp;&amp; , ||

// 此时存在/tmp/xxxx文件,执行了&&后面的命令# ls /tmp/xxxx && echo '/tmp/xxxx exits'/tmp/xxxx/tmp/xxxx exits // 此时存在/tmp/xxxx文件,不执行 || 后面的命令# ls /tmp/xxxx || echo '/tmp/xxxx exits'/tmp/xxxx test -e /dmtsai && echo "exit" || echo "n