当前位置:   article > 正文

Linux学习笔记——Shell高级进阶_linux shell进阶

linux shell进阶

目录

Shell运算符

算术运算符

布尔运算符

逻辑运算符

字符串运算符

文件测试运算符

echo打印数据

test命令

数字

字符串

文件测试

Shell流程控制

if

case

for

while

break

continue

Shell函数


Shell运算符

  • 算术运算符

      1. #! /bin/bash
      2. a=20
      3. b=10
      4. val=`expr $a + $b`#不是单引号 是esc下面的符号(英文输入法)
      5. echo "a + b : $val"
      6. val=`expr $a - $b`
      7. echo "a - b : $val"
      8. val=`expr $a \* $b`
      9. echo "a * b : $val"
      10. val=`expr $a / $b`
      11. echo "a / b : $val"
      12. val=`expr $a % $b`
      13. echo "a + b : $val"
      14. if [ $a == $b ]
      15. then
      16. echo "a 等于 b"
      17. else
      18. echo "a 不等于 b"
      19. fi
      20. if [ $a != $b ]
      21. then
      22. echo "a 不等于 b"
      23. else
      24. echo "a 等于 b"
      25. fi
    • expr是一款表达式计算工具,使用它能完成表达式的求值操作
  • 关系运算符
    • 关系运算符只支持数字,不支持字符串,除非字符串的值是数字
      1. #! /bin/bash
      2. a=10 #不能敲成 a = 10 这样a会被识别为一个命令
      3. b=20
      4. if [ $a -eq $b ] #不能敲成[$a -eq $b],需要空格,不然有语法错误
      5. then
      6. echo "$a -eq $b a 等于 b"
      7. else
      8. echo "$a -eq $b a 不等于 b"
      9. fi
      10. if [ $a -ne $b ]
      11. then
      12. echo "$a -ne $b a 不等于 b"
      13. else
      14. echo "$a -ne $b a 等于 b"
      15. fi
      16. if [ $a -gt $b ]
      17. then
      18. echo "$a -gt $b a 大于 b"
      19. else
      20. echo "$a -gt $b a 小于 b"
      21. fi
      22. if [ $a -lt $b ]
      23. then
      24. echo "$a -lt $b a 小于 b"
      25. else
      26. echo "$a -lt $b a 大于 b"
      27. fi
      28. if [ $a -ge $b ]
      29. then
      30. echo "$a -ge $b a 大于或等于 b"
      31. else
      32. echo "$a -ge $b a 小于 b"
      33. fi
      34. if [ $a -le $b ]
      35. then
      36. echo "$a -le $b a 小于或等于 b"
      37. else
      38. echo "$a -le $b a 大于 b"
      39. fi
  • 布尔运算

      1. #! /bin/bash
      2. a=10
      3. b=20
      4. if [ $a != $b ]
      5. then
      6. echo "$a != $b: a 不等于 b"
      7. else
      8. echo "$a == $b: a 等于 b"
      9. fi
      10. if [ $a -lt 100 -a $b -gt 15 ]
      11. then
      12. echo "$a 小于 100 且 $b 大于 15 :返回 true"
      13. else
      14. echo "$a 小于 100 且 $b 大于 15 :返回 false"
      15. fi
      16. if [ $a -lt 100 -o $b -gt 100 ]
      17. then
      18. echo "$a 小于 100 或 $b 大于 100:返回 true"
      19. else
      20. echo "$a 小于 100 或 $b 大于 100:返回 false"
      21. fi
      22. if [ $a -lt 5 -o $b -gt 100 ]
      23. then
      24. echo "$a 小于 5 或 $b 大于 100 :返回 true"
      25. else
      26. echo "$a 小于 5 或 $b 大于 100:返回 false"
      27. fi
  • 逻辑运算符

      1. #! /bin/bash
      2. a=10
      3. b=20
      4. if [[ $a -lt 100 && $b -gt 100 ]]
      5. then
      6. echo "返回 true"
      7. else
      8. echo "返回 false"
      9. fi
      10. if [[ $a -lt 100 || $b -gt 100 ]]
      11. then
      12. echo "返回 true"
      13. else
      14. echo "返回 false"
      15. fi
  • 字符串运算符

      1. #! /bin/bash
      2. a="abc"
      3. b="efg"
      4. if [ $a = $b ]
      5. then
      6. echo "$a = $b : a 等于 b"
      7. else
      8. echo "$a = $b : a 不等于 b"
      9. fi
      10. if [ $a != $b ]
      11. then
      12. echo "$a != $b : a 不等于 b"
      13. else
      14. echo "$a != $b : a 等于 b"
      15. fi
      16. if [ -z $a ]
      17. then
      18. echo "-z $a : 字符串长度为0"
      19. else
      20. echo "-z $a : 字符串的长度不为0"
      21. fi
      22. if [ -n $a ]
      23. then
      24. echo "-n $a : 字符串长度不为0"
      25. else
      26. echo "-n $a : 字符串长度为0"
      27. fi
      28. if [ $a ]
      29. then
      30. echo "$a : 字符串不为空"
      31. else
      32. echo "$a : 字符串为空"
      33. fi
  • 文件测试运算符

      1. #! /bin/bash
      2. file="/root/test.sh"
      3. if [ -r $file ]
      4. then
      5. echo "文件可读"
      6. else
      7. echo "文件不可读"
      8. fi
      9. if [ -w $file ]
      10. then
      11. echo "文件可写"
      12. else
      13. echo "文件不可写"
      14. fi
      15. if [ -x $file ]
      16. then
      17. echo "文件可执行"
      18. else
      19. echo "文件不可执行"
      20. fi
      21. if [ -f $file ]
      22. then
      23. echo "文件为普通文件"
      24. else
      25. echo "文件为特殊文件"
      26. fi
      27. if [ -d $file ]
      28. then
      29. echo "文件是个目录"
      30. else
      31. echo "文件不是个目录"
      32. fi
      33. if [ -s $file ]
      34. then
      35. echo "文件不为空"
      36. else
      37. echo "文件为空"
      38. fi
      39. if [ -e $file ]
      40. then
      41. echo "文件存在"
      42. else
      43. echo "文件不存在"
      44. fi

echo打印数据

  • Shell的echo指令与PHP的echo指令类似,都用于字符串的输出
    1. #! /bin/bash
    2. ## 显示普通字符串
    3. echo "Hello world"
    4. ## 显示转义字符
    5. echo "\"Hello world\""
    6. ## 显示变量
    7. name="xyx"
    8. echo "$name Hello world"
    9. ## 显示换行
    10. echo -e "OK! \n"
    11. echo "Hello world"
    12. ## 显示不换行
    13. echo -e "OK! \c"
    14. echo "Hello world"
    15. ## 显示结果定向至文件
    16. echo "Hello world" > myfile
    17. ## 原样输出字符串
    18. echo '$name\"'
    19. ## 显示命令执行结果
    20. echo `date`

test命令

  • Shell中的test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试
  • 数字

    • 参数说明
      -eq等于则为真
      -ne不等于则为真
      -gt大于则为真
      -ge大于等于则为真
      -lt小于则为真
      -le小于等于则为真
  • 字符串

    • 参数说明
      =等于则为真
      !=不相等则为真
      -z 字符串字符串的长度为0则为真
      -n 字符串字符串的长度不为0就为真
  • 文件测试

    • 参数说明
      -e 文件名如果文件存在则为真
      -r 文件名如果文件存在且可读则为真
      -w 文件名如果文件存在且可写则为真
      -x 文件名如果文件存在且可执行则为真
      -s 文件名如果文件存在且至少有一个字符为真
      -f 文件名如果文件存在且为普通文件则为真
      -c 文件名如果文件存在且为字符型特殊文件则为真
      -b 文件名如果文件存在且为块特殊文件则为真
      -d 文件名如果文件存在且为目录则为真
    1. #! /bin/bash
    2. #比较
    3. num1=100
    4. num2=100
    5. if test $[num1] -eq $[num2]
    6. then
    7. echo "两个数相等!"
    8. else
    9. echo "两个数不相等!"
    10. fi

Shell流程控制

  • if

      1. if condition1
      2. then
      3. command1
      4. elif condition2
      5. then
      6. command2
      7. else
      8. commandN
      9. fi
  • case

    • Shell case语句为多选择语句,可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令
      1. case 值 in
      2. 模式1)
      3. command1
      4. command2
      5. ...
      6. commandn
      7. ;;
      8. 模式2)
      9. command1
      10. command2
      11. ...
      12. commandn
      13. ;;
      14. esac
      1. #! /bin/bash
      2. echo "输入1到4的数字:"
      3. echo "你输入的数字为:"
      4. read num
      5. case $num in
      6. 1) echo "你选择了1"
      7. ;;
      8. 2) echo "你选择了2"
      9. ;;
      10. 3) echo "你选择了3"
      11. ;;
      12. 4) echo "你选择了4"
      13. ;;
      14. *) echo "你没有输入1到4之间的数字
      15. ;;
      16. esac
  • for

    • 当变量值在列表里,for循环即执行一次所有命令,使用列表名获取列表中的当前取值
    • 命令可为任何有效的shell命令和语句。in列表可以包含替换、字符串和文件名
    • in列表是可读的,如果不用它,for循环使用命令行的参数
      1. for var in item1 item2 ... itemN
      2. do
      3. command1
      4. command2
      5. ...
      6. commandN
      7. done
      1. #! /bin/bash
      2. for loop in 1 2 3 4 5
      3. do
      4. echo "The value is: $loop"
      5. done
      6. for str in "This is a string"
      7. do
      8. echo $str
      9. done
  • while

    • while循环用于不断执行一系列命令,也用于从输入文件 中读取数据;命令通常为测试条件
      1. while condition
      2. do
      3. command
      4. done
      5. #无限循环
      6. while true
      7. do
      8. command
      9. done
      1. #Bash let 命令,它用于执行一个或者多个表达式,变量计算中不需要加上$来表示变量
      2. #! /bin/bash
      3. i=1
      4. while(($i<=5))
      5. do
      6. echo $i
      7. let "i++"
      8. done
  • break

    • break命令允许跳出所有循环(终止执行后面的循环)
      1. #! /bin/bash
      2. while :
      3. do
      4. echo -n "输入1到5之间的数字"
      5. read aNum
      6. case $aNum in
      7. 1|2|3|4|5) echo "你输入的数字为 $aNum!"
      8. ;;
      9. *) echo "你输入的数字不是1到5之间的!游戏结束"
      10. break
      11. ;;
      12. esac
      13. done
  • continue

    • contiue命令不会跳出所有循环,仅仅跳出当前循环
      1. #! /bin/bash
      2. while :
      3. do
      4. echo -n "输入1到5之间的数字"
      5. read aNum
      6. case $aNum in
      7. 1|2|3|4|5) echo "你输入的数字为 $aNum!"
      8. ;;
      9. *) echo "你输入的数字不是1到5之间的!"
      10. continue
      11. echo "游戏结束"
      12. ;;
      13. esac
      14. done

Shell函数

  • Linux shell 可以用户定义的函数,然后在shell脚本中可以随便调用
  • 可以带function fun()定义,也可以直接fun()定义,不带任何参数
  • 参数返回,可以显示加;return 返回,如果不加,将以最后一条命令运行结果,作为返回值,return后跟数值n(0-255)
    1. #! /bin/bash
    2. ## 第一个函数----------------------------------------
    3. demoFun(){
    4. echo "这是我的第一个shell函数!"
    5. }
    6. echo "------------函数开始执行------------"
    7. demoFun
    8. echo "------------函数执行完毕------------"
    9. ## 函数返回值---------------------------------------
    10. funWithReturn(){
    11. echo "这个函数会对输入的两个数字进行相加运算..."
    12. echo "输入第一个数字:"
    13. read num1
    14. echo "输入第二个数字"
    15. read num2
    16. echo "两个数字分别为$num1$num2!"
    17. return $(($num1+$num2))
    18. }
    19. funWithReturn
    20. #函数返回值在调用该函数后通过 $? 来获得
    21. echo "输入的两个数字之和为 $? !"
    22. ## 函数参数-----------------------------------------
    23. funWithParam(){
    24. echo "第一个参数为$1"
    25. echo "第二个参数为$2"
    26. echo "第三个参数为$3"
    27. echo "第十个参数为$10"
    28. echo "第十个参数为${10}"
    29. echo "第十一个参数为${11}"
    30. echo "参数总共有$#个"
    31. echo "作为一个字符串输出所有参数 $* "
    32. }
    33. funWithParam 1 2 3 4 5 6 7 8 9 10 11 12 13 14

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/197447
推荐阅读
相关标签
  

闽ICP备14008679号