Linux教程 - Bash脚本初学者完整指南
Posted Linux公社
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux教程 - Bash脚本初学者完整指南相关的知识,希望对你有一定的参考价值。
来自:Linux迷
链接:https://www.linuxmi.com/bash-jiaocheng.html
/bin/bash
您所有的脚本都应以“#!/bin/bash”行开头。
将每个命令放在新行上。
每个注释都以#符号开头。
命令用()括号括起来。
该#!/bin/bash 语句是路径,我们将使用的shell。如果您使用的是其他shell,则需要编辑此路径。我们了解所有注释均以#符号开头。但是,当带有(!)标记后,该脚本将强制使用此行指向的shell执行。在我们的例子中,它是Bash shell。
您的第一个Bash脚本
与大多数编程语言一样,我们将编写一个脚本,该脚本在执行时会打印“ Hello World”语句。打开您喜欢的文本编辑器,然后粘贴以下命令。将文本文件另存为linuxmi.sh或不是内置命令的任何其他名称。
linuxmi@linuxmi:~/www.linuxmi.com$ nano linuxmi.sh
#!/bin/bash
#这个脚本将在终端上打印“Hello World”
echo "Hello World!www.linuxmi.com"
保存文件后,通过执行以下命令使其可执行:
linuxmi@linuxmi:~/www.linuxmi.com$ chmod +x linuxmi.sh
现在,使用以下命令运行它:
linuxmi@linuxmi:~/www.linuxmi.com$ ./linuxmi.sh
上面的脚本只有三行。第一个是我们在上面讨论的Hash-Bang Hack,第二个是注释,第三个是将要执行的命令。注意,注释永远不会执行。
让我们看看您可以利用的其他bash脚本功能。
Echo命令
Echo命令用于在Linux命令行或终端上打印输出。如果您是开发人员,并且以前使用过php,那么您一定也遇到过此命令。让我们编写一个小的bash脚本来演示此命令的工作方式。
#!/bin/bash
#让我们打印第一个语句
echo "这是LinuxMi.com - 换行"
#让我们不换行打印第二个语句
echo -n "这是LinuxMi.com - 不换行"
保存脚本,分配所需的权限,然后执行它。
为了理解代码,第一个echo命令打印一条语句并转到下一行。第二个echo命令的-n参数可以防止脚本进入下一行。您可以在Echo命令中使用许多其他选项,包括变量,如下所示。
变量
变量是任何编程语言中常见且必不可少的部分。可以用几种方法声明Bash变量。将值分配给任何变量时,无需使用任何符号。但是,在调用变量的值时,您将需要$在变量的开头使用符号。
您可以在终端上使用变量或将其用作脚本。在终端上执行以下命令。
linuxmi@linuxmi:~/www.linuxmi.com$ myWebsite="LinuxMi.com"
linuxmi@linuxmi:~/www.linuxmi.com$ echo $myWebsite
现在,让我们创建一个bash脚本,它接受用户的两个输入,并将它们存储在变量$x和$y中。然后,脚本将检查这两个值是否相等。
#!/bin/bash
echo "输入第一个数字"
read a
echo "输入第二个数字"
read b
if [[ $a -eq $b ]]
then
echo "数字是相等的"
else
echo "数字不相等"
fi
现在,让我们仔细看看代码。前两个echo语句提示用户输入第一个和第二个数字。read命令将等待用户输入一个数字并将其存储到指定的变量中。在我们的例子中,这是a和b,然后我们有一个if语句来检查这两个值是否相等。
条件语句
在任何编程语言中,条件语句控制程序的流程。一段代码只会在满足特定条件时执行。一些最常见的条件语句包括“if-then-else”和“case”。下面是if-then-else语句的基本语法。
if [[ 条件 ]]
then
<执行一条指令>
else
<执行另一条指令/命令>
fi
#!/bin/bash
echo "输入你的年龄"
read age
if ((age > 18 ))
then
echo "你可以去参加聚会"
else
echo "你没有资格参加聚会"
fi
让我们看一下上面的脚本。我们有echo语句,提示用户输入他们的年龄。read语句存储了输入到变量“age”中的年龄。然后我们有一个if-then-else条件语句,在指示用户之前检查年龄是否大于18岁。
循环
当您希望多次执行一段代码时,通常使用循环。例如,如果我想echo显示1000行的“欢迎来到LinuxMi.com”语句,我需要1000个echo语句。但是,对于循环,我所需要做的就是指定语句在终端上被echo或打印的次数。Bash支持三种循环:For循环,While循环和Until循环。让我们逐个来仔细分析。
For循环
For循环用于遍历指定数据或数组的列表。下面是Bash For循环的基本语法;
for Value in 1 2 3 4 5 .. N
do
instruction1
instruction2
instruction-N
done
或者
for VALUE in file1 file2 file3
do
instruction1 on $VALUE
instruction2
instruction-N
done
看看下面的脚本。遍历一周中的给定日期,并将它们逐行打印在终端上。
#在循环的每次迭代中读取一个工作日的名称
for day in 星期一 星期二 星期三 星期四 星期五 星期六 星期日
do
echo "$day"
done
让我们将脚本另存为linuxmi.sh并执行它。下面是输出的屏幕截图。
那只是您可以使用For循环执行的简单示例。您也可以将其与条件语句结合使用以完成特定任务。
While循环
While循环在特定条件保持为True时执行特定任务。在每次迭代中,循环将在执行指令之前先检查条件。当条件为False时,循环将终止。bash While循环的基本语法如下:
while [CONDITION]
do
[COMMANDS]
done
#!/bin/bash
x=1
while [ $x -le 7 ]
do
echo "欢迎来到LinuxMi.com"
x=$(( $x + 1 ))
done
让我们将脚本另存为linuxmi.sh并执行它。下面是输出的屏幕截图。
让我们看一下上面的While循环脚本。我们首先声明一个变量X,赋值为1。然后我们创建一个While语句,它输出语句“欢迎来到LinuxMi.com”。而X小于7。最后,我们在每次迭代后对X加1。
Until循环
只要set条件的计算结果为false,则使用Bash Until循环执行一组指令或命令。下面是Until循环的基本语法。
until [CONDITION]
do
[INSTARUCTIONS/COMMANDS]
done
与While循环类似,Until循环在执行指令或命令之前首先计算设置的条件。如果条件的计算结果为false,则执行指令。当条件的值为true时,循环终止。看看下面的例子。
#!/bin/bash
count=0
until [ $count -gt 5 ]
do
echo 计数: $count
((count++))
done
保存并运行上面的脚本后,我们得到如下输出:
上面的脚本首先创建一个变量count并将其设置为zero(0)。这就是控制程序流程的条件。Until循环检查计数值是否大于5。如果不是,它将打印通过的指令。但是,如果值大于5,循环将立即终止。最后,我们将计数值增加1 (count++)。
Bash函数
在编程和脚本中,函数用于保存执行特定任务所需的可重用代码段。因此,如果您希望在脚本的不同部分执行类似的命令,则不需要重复编写这些命令。将它们封装在一个函数中并执行该函数。
下面是Bash函数的基本语法。
function_name () {
<instructions/commands>
}
或者
function function_name {
<instructions/commands>
}
让我们创建一个使用函数的简单脚本。我们首先创建一个名为“ lmFunction”的函数,该函数在被调用时输出语句“你好,我是第一个函数”。第二个函数“ lmCities”由于接受了传递的参数而有些高级。调用函数名称后给出参数。它们可以在函数中以$1的形式访问。
#!/bin/bash
lmFunction () {
echo "你好,我是第一个函数"
echo "你好,我是第一个函数"
echo
}
echo "这是第二个函数"
function lmCities () {
echo Hello $1
}
lmFunction
lmCities www.linuxmi.com
lmCities Linux迷,当年的大师兄
保存并执行脚本之后,我们得到下面的输出。
Bash的菜单
当编写脚本执行高级任务时,您可能需要用户从终端上显示的几个选项中选择一个选项。为此,我们将使用bash select命令。
它创建一个简单的菜单脚本,提示用户从列表中选择他们喜欢的Linux发行版。看看下面的脚本。
#!/bin/bash
#为用户打印消息
echo "选择您最喜欢的Linux发行版"
select distro in Ubuntu Fedora OpenSUSE Debian Parrot ArchLinux Kali
do
#打印所选值
if [[ $distro == "Exit" ]]
then
exit 0
else
echo "所选的Linux发行版是 $distro"
fi
done
让我们将脚本保存为linuxmi.sh并执行它。我们得到下面的输出。
在上面的脚本中,我们有一个包含七个Linux发行版的列表,用户将从中选择一个。在他们做出选择之后,它将存储在变量发行版中,然后通过将其与字符串“所选的Linux发行版是”连接在一起进行打印。Bash选择菜单可能非常有用,特别是当您有多个脚本执行不同的任务,并且一个脚本必须选择它们希望执行的那个脚本时。
算术
每种编程语言都支持执行算术操作,bash脚本也不例外。但是,我们执行算术运算的方式略有不同。下面是在bash中执行算术操作的一种方法。我们将研究四种类型的算术运算—和、除法和乘法。
#!/bin/bash
# 计算总和
result=$((80+7))
# 打印和
echo "和 = $result"
# 计算减法
result=$((98-7))
# 打印差
echo "差 = $result"
# 计算除法
result=$((66/6))
# 打印商
echo "商 = $result"
#计算乘法
result=$((19*19))
echo "积 = $result"
让我们将上面的脚本保存为linuxmi.sh并执行它。我们得到下面的输出。
总结
这是一个关于开始使用Bash脚本的完整的初学者指南。然而,除了本教程介绍的内容外,Bash还有更多内容。我建议您提高技能的一个地方是GNU的Bash参考手册。如果你对这篇文章有任何问题或疑问,请在下面的评论栏里给我们留言。
...END...
长按或扫描下面的二维码关注Linux公社
关注Linux公社,添加“星标”
每天获取技术干货,让我们一起成长
合作联系微信:linuxgs
以上是关于Linux教程 - Bash脚本初学者完整指南的主要内容,如果未能解决你的问题,请参考以下文章
linux shell编程bash编程shell教程bash教程shell文档bash文档shell脚本bash脚本教程第一部分:绪论