40 个简单又有效的 Linux Shell 脚本示例 |
您所在的位置:网站首页 › linux简单脚本编写 › 40 个简单又有效的 Linux Shell 脚本示例 |
注释对文档很有用,是高质量代码库的要求。将注释放在处理关键逻辑的代码中是一种常见的做法。要注释掉一行,只需在其前面使用 #(hash)字符。例如,请查看下面的 bash 脚本示例。 #!/bin/bash # Adding two values ((sum=25+35)) #Print the result echo$sum 此脚本将输出数字 60。首先,在某些行之前使用 #检查注释的使用方式。不过,第一行是一个例外。它被称为 shebang,让系统知道在运行这个脚本时要使用哪个解释器。 4.多行注释 许多人使用多行注释来记录他们的 shell 脚本。在下一个名为 comment.sh 的脚本中检查这是如何完成的。 #!/bin/bash : ' This calculates the square of 5. ' ((area=5*5)) echo$area 注意多行注释是如何放置在内部的:“和” 字符。 5.While 循环 while 循环构造用于多次运行某些指令。查看以下名为 while.sh 的脚本,以更好地理解此概念。 #!/bin/bash i=0 while[ $i-le 2 ] do echoNumber: $i ((i++)) done 因此,while 循环采用以下形式。 while[ condition ] do commands 1 commands n done 方括号周围的空格是必填的。 6.For 循环 for 循环是另一种广泛使用的 bashshell 构造,它允许用户高效地迭代代码。下面演示了一个简单的示例。 #!/bin/bash for(( counter=1; counter #!/bin/bash > echo-n "Enter a number:" > readnum > if[[ $num-gt 10]] > then > echo"Number is greater than 10." > fi 如果通过输入提供的数字大于 10,上述程序将仅显示输出。-gt 表示大于;类似地 - lt 表示小于 - le 表示小于等于;且 - ge 表示大于等于。此外,还需要 [[]]。 9.使用 If Else 进行更多控制 将 else 构造与 if 结合起来,可以更好地控制脚本的逻辑。下面显示了一个简单的示例。 #!/bin/bash readn if[ $n-lt 10 ]; then echo"It is a one digit number" else echo"It is a two digit number" fi 其他部分需要放在 if 的动作部分之后和 fi 之前。 10.使用 AND 运算符 AND 运算符允许我们的程序检查是否同时满足多个条件。由 AND 运算符分隔的所有部分必须为 true。否则,包含 AND 的语句将返回 false。查看下面的 bash 脚本示例,以更好地了解 AND 的工作原理。 #!/bin/bash echo-n "Enter Number:" readnum if[[ ( $num-lt 10 ) && ( $num%2 -eq 0 ) ]]; then echo"Even Number" else echo"Odd Number" fi AND 运算符由 && 符号表示。 11.使用 OR 运算符 OR 运算符是另一个关键的构造,它允许我们在脚本中实现复杂、健壮的编程逻辑。与 AND 相反,当 OR 运算符的任一操作数为真时,由 OR 运算符组成的语句返回真。仅当由 OR 分隔的每个操作数为假时,它才返回假。 #!/bin/bash echo-n "Enter any number:" readn if[[ ( $n-eq 15 || $n-eq 45 ) ]] then echo"You won" else echo"You lost!" fi 这个简单的示例演示了 OR 运算符如何在 Linuxshell 脚本中工作。只有当用户输入数字 15 或 45 时,它才会宣布用户为获胜者。|| 符号表示 OR 运算符。 12.使用 El if elif 语句代表 else if,并为实现链逻辑提供了一种方便的方法。通过评估以下示例,了解 elif 的工作原理。 #!/bin/bash echo-n "Enter a number: " readnum if[[ $num-gt 10 ]] then echo"Number is greater than 10." elif[[ $num-eq 10 ]] then echo"Number is equal to 10." else echo"Number is less than 10." fi 上面的程序是不言自明的,所以我们不会逐行剖析它。相反,更改脚本中的变量名称和值等部分,以检查它们如何一起工作。 13.case 条件 . switch 构造是 Linux bash 脚本提供的另一个强大功能。它可以用于需要嵌套条件的地方,但不希望使用复杂的 if-else elif 链。看看下一个例子。 #!/bin/bash echo-n "Enter a number: " readnum case$numin 100) echo"Hundred!!";; 200) echo"Double Hundred!!";; *) echo"Neither 100 nor 200";; esac 条件写在 case 和 esac 关键字之间。*)用于匹配除 100 和 200 以外的所有输入。 14.命令行参数 在许多情况下,直接从命令 shell 获取参数是有益的。下面的示例演示了如何在 bash 中执行此操作。 运行此脚本时,在其名称后添加两个附加参数。我将其命名为 test.sh,调用过程概述如下。 $ ./test.sh Hey Howdy 因此, 用 于 访 问 第 一 个 参 数 , 2 用于访问第二个参数,依此类推。最后,$# 用于获取参数总数。 15.使用名称获取参数 下面的示例显示了如何获取带有名称的命令行参数。 #!/bin/bash forarg in" $@" do index=$( echo$arg| cut -f1 -d=) val=$( echo$arg| cut -f2 -d=) case$indexin X) x= $val;; Y) y= $val;; *) esac done ((result=x+y)) echo"X+Y= $result" 将此脚本命名为 test.sh,并按如下所示调用它。 $ ./test.sh X=44 Y=100 它应该返回 X+Y=144。这里的参数存储在 “$@” 中,脚本使用 Linuxcut 命令获取它们。 16.连接字符串 字符串处理对于广泛的现代 bash 脚本来说非常重要。值得庆幸的是,它在 bash 中更加舒适,并允许以更精确、简洁的方式实现这一点。请参见下面的示例,了解 bash 字符串连接。 #!/bin/bash string1= "Ubuntu" string2= "Pit" string= $string1$string2 echo" $stringis a great resource for Linux beginners." 17.字符串截取 与许多编程语言不同,bash 不提供任何用于剪切字符串部分的内置函数。然而,下面的示例演示了如何使用参数展开来实现这一点。 #!/bin/bash Str= "Learn Bash Commands from UbuntuPit" subStr= ${Str:0:20} echo$subStr 该脚本应打印出 “学习 Bash 命令” 作为其输出。参数展开形式为 ${VAR_NAME:S:L}。这里,S 表示起始位置,L 表示长度。 18.使用 cut 做截取 可以在脚本中使用 Linux cut 命令来截取字符串的一部分,也就是子字符串。下一个示例显示了如何做到这一点。 #!/bin/bash Str= "Learn Bash Commands from UbuntuPit" #subStr=${Str:0:20} subStr=$( echo$Str| cut -d ' '-f 1-3) echo$subStr 19.添加两个值 在 Linux shell 脚本中执行算术运算非常容易。下面的示例演示了如何从用户接收两个数字作为输入并将它们相加。 #!/bin/bash echo-n "Enter first number:" readx echo-n "Enter second number:" ready (( sum=x+y )) echo"The result of addition= $sum" 如您所见,在 bash 中添加数字相当简单。 20.添加多个值 您可以使用循环获取多个用户输入并将其添加到脚本中。以下示例显示了这一点。 #!/bin/bash sum=0 for(( counter=1; counter> editors.txt echo"After appending the file" cat editors.txt 现在您应该注意到,我们直接从 Linux bash 脚本使用日常终端命令。 28.测试文件存在 下一个 shell 脚本示例显示如何检查 bash 程序中文件的存在。 #!/bin/bash filename= $1 if[ -f " $filename" ]; then echo"File exists" else echo"File does not exist" fi 我们直接从命令行传递文件名作为参数。 29.从 Shell 脚本发送邮件 从 bash 脚本发送电子邮件非常简单。下面的简单示例将演示一种从 bash 应用程序执行此操作的方法。 #!/bin/bash recipient=”[email protected]” subject=”Greetings” message=”Welcome to UbuntuPit” `mail -s $subject$recipient messages cat /dev/null > wtmp echo"Logs cleaned up." 请记住以 root 身份运行此 Linuxshell 脚本。 37.使用 Bash 备份脚本 Shell 脚本提供了一种强大的方法来备份文件和目录。以下示例将备份过去 24 小时内修改的每个文件或目录。该程序使用 find 命令执行此操作。 #!/bin/bash BACKUPFILE=backup-$(date +%m-%d-%Y) archive= ${1:-$BACKUPFILE} find . -mtime -1 - typef -print0 | xargs -0 tar rvf " $archive.tar" echo"Directory $PWDbacked up in archive file \" $archive.tar.gz\"." exit0 备份过程成功后,它将打印文件和目录的名称。 38.检查你是否是 root 用户 下面的示例演示了通过 Linux bash 脚本快速确定用户是否为 root 用户的方法。 #!/bin/bash ROOT_UID=0 if[ " $UID" -eq " $ROOT_UID" ] then echo"You are root." else echo"You are not root" fi exit0 此脚本的输出取决于运行它的用户。它将根据 $UID 匹配根用户。 39.从文件中删除重复行 文件处理需要相当长的时间,并在许多方面阻碍了管理员的工作效率。例如,在文件中搜索重复项可能会成为一项艰巨的任务。幸运的是,您可以使用一个简短的 shell 脚本来完成此操作。 #! /bin/sh echo-n "Enter Filename-> " readfilename if[ -f " $filename" ]; then sort $filename| uniq | tee sorted.txt else echo"No $filenamein $pwd...try again" fi exit0 上面的脚本逐行遍历文件并删除所有重复的行。然后,它将新内容放入新文件,并保持原始文件的完整性。 40.系统维护 我经常使用一个小的 Linuxshell 脚本来升级我的系统,而不是手动升级。下面的简单 shell 脚本将向您展示如何做到这一点。 #!/bin/bash echo-e "\n $(date "+%d-%m-%Y --- %T")--- Starting work\n" apt-get update apt-get -y upgrade apt-get -y autoremove apt-get autoclean echo-e "\n $(date "+%T")\t Terminated" 该脚本还处理不再需要的旧包。您需要使用 sudo 运行此脚本,否则它将无法正常工作。 END 官方站点:www.linuxprobe.com Linux命令大全:www.linuxcool.com (新群,火热加群中……)返回搜狐,查看更多 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |