linux bash基础语法,Linux Bash脚本基本语法知识

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正。如有不明白的地方,愿可一起探讨。

前提:读者能够基本使用一款文本编辑器以及了解文件的权限概念。

准备工作

在/home目录创建script文件用于保存所有的脚本程序:

# mkdir /home/script

# cd /home/script/

Bash脚本的基本输入输出

第一个bash脚本:

# vim ./hello-world.sh

1940f2133ae1215ea608d8ca0416e4ff.png

说明:

"#!"是一个约定标记,它告诉系统这个脚本需要什么解释器来执行

作为可执行脚本:

# chmod +x ./hello-world.sh

# ./hello-world.sh

注意:一定得写成./hello-world.sh而不是hello-world.sh

1.基本输入语句:

第三行,read命令,读取来自键盘输入的变量(何为变量?将在下一节进行说明说明)。

2.基本输出语句:

第五行,echo命令,向屏幕窗口输出文本。

Bash脚本的变量

变量到底是个什么东西?

可简单的理解为,是存储数据的地方,可以通过引用这个变量得到其数据。

变量名的命名规范:

首字符必须为字母;

中间不能有空格;

不能使用标点符号;

不能使用bash里的关键字。

如何使用变量?

# myName="muluhe"

# echo ${myName}

说明:

${变量名}表示引用变量中的内容。

注意:在此处,花括号不是必须,但我建议在引用变量时,加上花括号,这是一个比较好的编程习惯。

为什么建议加花括号?

# echo ${myName}yes

如果不加花括号,表示输出nyNameyes这个变量的内容。

Bash脚本的注释

以#号开头的就是注释,解释器会忽略(除第一行的#!/bin/bash外)。

90bb5ea8f56e72afd0bff98c7590184e.png

有没有一种方式可以对多行进行注释呢?

Bash脚本的字符串

字符串是bash脚本编程中最常用的数据类型,字符串可以常常用单引号或双引号引起来。

单引号:

str="this is a string"

单引号字符串的限制:

单引号里任何字符都会原样输出,单引号字符串中的变量引用时无效的;

单引号字符串中不能出现单引号(对单引号进行转义也不行)。

双引号:

myName="muluhe"

str="Hello, my name is ${myName}\n"

双引号的特点:

双引号里可以对变量进行引用

获取字符串的长度:

echo ${#myName}

提取子字符串:

string="my name is muluhe."

echo ${string:1:4} # 输出my n

Bash脚本的数组

bash脚本仅支持一维数组且不限定数组元素的大小。

定义数组:

在bash中,用括号来表示数组,数组元素用“空格”符号分隔开。定义数组的一般形式:

数组名=(值1 值2 ... 值n)

例如:arrayName=(0 1 2 muluhe)

还可以单独定义数组的各个分量:

arrayName[0]=100

arrayName[1]=200

arrayName[3]=300

可以不使用连续的下标,且理论上下标的范围没有限制。

注意,数组的下标是从0开始的。

数组的长度:

${#arrayName[@]}:表示数组的长度

数组的复制:

例如:arrayName2=${arrayName[@]}

向数组中追加元素:

演示实例:复制一个数组中下标为偶数的元素至新数组中

861887d5d703603a1f2fe7f816cfdf77.png

从数组中删除元素:

unset arrayName[1]

Bash脚本的if...then选择

1.简单条件判断式

if [ 条件判断式 ]; then

当条件判断式成立时,可以执行的内容;

fi

演示实例:

f51ddd0f60cc1dc258b20dbecc1246b9.png

2.复杂条件判断式

if[ 条件判断式 ]; then

当条件成立时,可以执行的内容;

else

当条件不成立时,可以执行的内容;

fi

if [ 条件判断式一 ]; then

当条件判断式一成立时,可以执行的内容;

elif [ 条件判断式二 ]; then

当条件判断式二成立时,可以执行的内容;

else

当条件判断式一和二都不成立时,可以执行的内容;

fi

演示实例:

b79736a9e284641ee33ac3b73f119f35.png

Bash脚本的case...esac选择

case...in...esac基本语法:

case ${变量名称} in

"第一个变量内容")

程序段

;;

"第二变量内容")

程序段

;;

*)

不包含第一个变量内容与第二个变量内容的其他程序段

;;

esac

演示实例:

af699d2c1dd5398a9937668378a9fbb5.png

Bash脚本的while循环

while循环的基本语法:

while [ 条件判断式 ]

do

程序段落

done

说明:

当条件判断式成立时,就进行循环,直到条件判断式不成立时,退出循环

演示实例:

7c06cfafa42b8b8cbb43f2182b0823a9.png

Bash脚本的until循环

until循环的基本语法:

until [ 条件判断式 ]

do

程序段

done

演示实例:

8148e87cfb57870c894b98fb564d39cb.png

Bash脚本的for循环

for...do...done(固定循环)基本语法:

for var in con1 con2 con3 ...

do

程序段

done

演示实例:

ce9e080a9e72b7a6cc4f8396ed87ccfe.png

for...do...done(数值处理)基本语法:

for (( 初始值; 限制值; 执行步长 ))

do

程序段

done

演示实例:

1b3f0b7f313d8e2e36497cdcd2856530.png

Bash脚本的continue与break

continue

跳出当前循环

演示实例:

e704b4d96a461cb8d3948f4a20ad1b8e.png

break

终止所有循环

演示实例:

2f6f5317f5c85a2e42bdf43ceec827dc.png

Bash脚本的function功能

function的基本语法:

function fname () {

程序段

}

演示实例:

a5a8ad9f0140eb40756eeeee867c8eeb.png

Bash脚本的追踪与调试

bash [-nx] scripts.sh

参数:

-n : 不执行scripts.sh,仅查询语法问题;

-x : 将所执行的scripts.sh内容显示到屏幕上;

实例演示:

利用图12脚本进行测试:# bash -x function-test.sh one

说明:图12的脚本名称为function-test.sh

8d16cccf36248f1873b10582c76aca30.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值