简单而有效的Linux Shell脚本示例(续一)

系统 Linux
创建简单而有效的Linux Shell脚本来处理日常工作非常容易。此外,对这一主题的了解将使您成为Linux的高级用户。请和我们一起对Unix Shell脚本进行详细介绍。

Linux提供了具有强大功能的各种功能强大的Shell,包括Bash,Zsh,Tcsh和Ksh。这些Shell程序最令人惊奇的功能之一就是它们的可编程性。创建简单而有效的Linux Shell脚本来处理日常工作非常容易。此外,对这一主题的了解将使您成为Linux的高级用户。请和我们一起对Unix Shell脚本进行详细介绍。简单而有效的Linux Shell脚本示例(1-9)见 :

https://os.51cto.com/art/202004/614978.htm

10. 使用AND运算符

AND运算符允许我们的程序一次检查是否满足多个条件。用AND运算符分隔的所有部分都必须为true。否则,包含AND的语句将返回false。查看以下bash脚本示例,以更好地了解AND的工作原理。

  1. #!/bin/bash 
  2. echo -n "输入数字:" 
  3. read num 
  4. if [[ ( $num -lt 10 ) && ( $num%2 -eq 0 ) ]]; then 
  5. echo "您刚才输入的是偶数:$num" 
  6. else 
  7. echo "您刚才输入的是奇数:$num" 
  8. fi 

11. 使用“OR”运算符

OR运算符是另一个至关重要的结构,它使我们能够在脚本中实现复杂而强大的编程逻辑。与AND相反,由OR运算符组成的语句在其任何一个操作数为true时均返回true。仅当由OR分隔的每个操作数为false时,它才返回false。

  1. #!/bin/bash 
  2. echo -n "输入任何数字:" 
  3. read n 
  4. if [[ ( $n -eq 25 || $n -eq 50 ) ]] 
  5. then 
  6. echo "你赢了" 
  7. else 
  8. echo "你输了" 
  9. fi 

这个简单的示例演示了OR运算符如何在Linux Shell脚本中工作。仅当用户输入数字25或50时,它才宣布用户为赢家。符号代表“or”运算符。

12. 使用Elif

elif语句代表else if,并为实现链逻辑提供了一种方便的方法。通过评估以下示例,了解elif的工作原理。

  1. #!/bin/bash 
  2. echo -n "输入一个数字: " 
  3. read num 
  4. if [[ $num -gt 20 ]] 
  5. then 
  6. echo "数字大于20." 
  7. elif [[ $num -eq 20 ]] 
  8. then 
  9. echo "数字等于20." 
  10. else 
  11. echo "数字小于20." 
  12. fi 

上面的程序是不言自明的,因此我们不再逐行进行剖析。你更改脚本的某些部分(例如变量名和值)以检查它们如何一起工作。

13. 多分支选择结构

多分支选择结构是Linux bash脚本提供的另一个大特性。它可以在需要嵌套条件的地方使用,但是您不希望使用复杂的if-else-elif链。那请看下一个例子。

条件写在case和esac关键字之间。 *)用于匹配除100和200以外的所有输入。

14. 命令行参数

在许多情况下,直接从命令shell获取参数可能是有益的。下面的示例演示如何在bash中执行此操作。

  1. #!/bin/bash 
  2. echo "参数总数 : $#" 
  3. echo "第1个参数 = $1" 
  4. echo "第2个参数 = $2" 

echo "第2个参数 = $2"在其名称之后,使用两个附加参数运行此脚本。我将其命名为linuxidc.com.sh,并且调用过程概述如下。

  1. [linuxidc@linux:~/www.linuxidc.com]$ ./linuxidc.com.sh linuxidc.com linuxidc ubuntu 

因此,$1用于访问第一个参数,$2用于访问第二个参数,依此类推。$#用于获取参数的总数。

15. 获取带有名称的参数

下面的示例演示如何获取带有名称的命令行参数。

  1. #!/bin/bash 
  2. for arg in "$@" 
  3. do 
  4. index=$(echo $arg | cut -f1 -d=) 
  5. val=$(echo $arg | cut -f2 -d=) 
  6. case $index in 
  7. A) a=$val;; 
  8. B) b=$val;; 
  9. *) 
  10. esac 
  11. done 
  12. ((result=a+b)) 
  13. echo "A+B=$result" 

echo "A+B=$result"将此脚本命名为linuxidc.com.sh并按如下所示进行调用。

  1. [linuxidc@linux:~/www.linuxidc.com]$ ./linuxidc.com.sh A=200 B=70 

它应该返回A+B=270。此处的参数存储在' $@ '内,脚本使用Linux cut命令获取它们。

16. 连接字符串

字符串处理对于各种现代bash脚本至关重要。值得庆幸的是,它在bash中使用起来更加舒适,并且允许使用一种更加精确,简洁的方式来实现此目的。请参阅以下示例,快速浏览bash字符串连接。

  1. #!/bin/bash 
  2. string1="Linux" 
  3. string2="公社" 
  4. string3="(www.linuxidc.com)" 
  5. string=$string1$string2$string3 
  6. echo "$string 为Linux爱好者提供海量技术教程。" 

echo "$string 为Linux爱好者提供海量技术教程。"以下程序输出字符串“Linux公社(www.linuxidc.com) 为Linux爱好者提供海量技术教程。”如下图:

17. 切片字符串

与许多编程语言相反,bash不提供用于切片字符串部分的任何内置函数。下面的示例演示如何使用参数扩展来完成此操作。

  1. #!/bin/bash 
  2. Str="Learn Bash Commands from linuxidc.com" 
  3. subStr=${Str:0:20} 
  4. echo $subStr 

这个脚本应该输出“Learn Bash Commands”。参数扩展采用${VAR_NAME:S:L}的形式。在此,S表示起始位置,L表示长度。

18. 使用cut提取子字符串

可以在脚本内部使用Linux cut命令来“剪切”一部分字符串,也就是子字符串。下一个示例显示了如何完成此操作。

  1. #!/bin/bash 
  2. Str="Learn Bash Commands from linuxidc.com" 
  3. #subStr=${Str:0:25} 
  4. subStr=$(echo $Str| cut -d ' ' -f 1-4) 
  5. echo $subStr 

19. 两个值相加

在Linux Shell脚本中执行算术运算非常容易。下面的示例演示如何从用户接收两个数字作为输入并将其相加。

  1. #!/bin/bash 
  2. echo -n "输入第一个数字:" 
  3. read a 
  4. echo -n "输入第2个数字:" 
  5. read b 
  6. (( sum=a+b )) 
  7. echo "相加的结果=$sum" 

如您所见,在bash中添加数字相当简单。

 

责任编辑:赵宁宁 来源: Linux公社
相关推荐

2020-04-22 11:11:22

LinuxShell脚本

2023-10-04 18:23:02

插入排序算法

2024-01-30 09:00:28

框架BMRL模型

2021-05-06 15:18:09

Shell脚本Linux

2010-03-05 10:24:33

2022-09-13 23:43:00

Python机器学习脚本

2017-08-11 17:20:07

LinuxShell

2010-03-23 17:06:01

2017-07-25 11:22:06

2022-08-30 08:52:04

shell脚本Linux

2014-08-13 14:48:01

LinuxShell脚本

2023-05-20 17:45:25

LinuxShell

2015-06-24 10:13:38

LinuxLinux终端彩蛋

2021-02-15 17:29:46

LinuxShell脚本

2019-08-12 07:45:44

Linux脚本shell

2019-11-07 14:00:36

MySQL数据库SQL

2017-08-17 16:37:59

MySQL数据迁移

2022-09-09 08:51:42

ShellLinux

2016-12-16 09:23:29

LinuxShell脚本

2018-04-04 08:59:22

LinuxUNIXShell
点赞
收藏

51CTO技术栈公众号