40 个简单又有效的 Linux Shell 脚本示例

您所在的位置:网站首页 shell脚本wait用法 40 个简单又有效的 Linux Shell 脚本示例

40 个简单又有效的 Linux Shell 脚本示例

2023-04-05 00:59| 来源: 网络整理| 查看: 265

注释对文档很有用,是高质量代码库的要求。将注释放在处理关键逻辑的代码中是一种常见的做法。要注释掉一行,只需在其前面使用 #(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