Linux Bash脚本基本语法知识



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



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

准备工作



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

# mkdir /home/script

# cd /home/script/

Bash脚本的基本输入输出



第一个bash脚本:

# vim ./hello-world.sh

说明:

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

作为可执行脚本:

# 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外)。

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

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[@]}

向数组中追加元素:

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

从数组中删除元素:

unset arrayName[1]

Bash脚本的if...then选择



1.简单条件判断式

if [ 条件判断式 ]; then

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

fi

演示实例:

2.复杂条件判断式

<一个条件判断>

if [ 条件判断式 ]; then

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

else

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

fi

<多个条件判断>

if [ 条件判断式一 ]; then

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

elif [ 条件判断式二 ]; then

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

else

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

fi

演示实例:

Bash脚本的case...esac选择



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

case ${变量名称} in

"第一个变量内容")

程序段

 ;;

"第二变量内容")

程序段

;;

*)

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

;;

esac

演示实例:

Bash脚本的while循环



while循环的基本语法:

while [ 条件判断式 ]

do

程序段落

done

说明:

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

演示实例:

Bash脚本的until循环



until循环的基本语法:

until [ 条件判断式 ]

do

程序段

done

演示实例:

Bash脚本的for循环



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

for var in con1 con2 con3 ...

do

程序段

done

    演示实例:

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

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

do

程序段

done

    演示实例:

Bash脚本的continue与break



continue

跳出当前循环

演示实例:

break

终止所有循环

演示实例:

Bash脚本的function功能



function的基本语法:

function fname () {

程序段

}

演示实例:

Bash脚本的追踪与调试



bash [-nx] scripts.sh

参数:

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

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

实例演示:

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

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

Linux Bash脚本基本语法知识,布布扣,bubuko.com

时间: 2024-08-02 02:48:21

Linux Bash脚本基本语法知识的相关文章

[linux]BASH 的基本语法

最简单的例子 —— Hello World! 关于输入.输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1     最简单的例子 —— Hello World! 几乎所有的讲解编程的书给读者的第一个例子都是 Hello World 程序,那么我们今天也就从这个例子出发,来逐步了解 BASH. 用 vi 编辑器编辑一个 hello 文件如下: #!/bin/bash # This is a very simple exampleech

Linux Bash脚本编程语言中的美学与哲学

我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨Bash脚本语言中的美学与哲学. 这不是一篇Bash脚本编程的教程,但是却能让人更加深入地了解Bash脚本编程,更加快速地学习Bash脚本编程. 阅读这篇随笔,不需要你有Bash编程的经验,但一定要和我一样热衷于探索各种编程语言的本质,感悟它们的魅力. 其实早就想写关于Bash的东西了. 我们平时喜欢对编程语言进行分类,比如面向过程的编程语言.面向对象的编程语言.函数式编程语言等等.在我心中,我认为Bash就是

linux Bash脚本基础符号总结 (一)

1.初识Bash 首先编译一个简单的bash vim hello.sh 使用vim编辑hello.sh ,输入如下代码并保存: #!/bin/bash echo hello word 运行Bash脚本的方式: # 使用shell来执行 $ sh hello.sh # 使用bash来执行 $ bash hello.sh 还可以让脚本本身就具有可执行权限,通过chmod命令可以修改: # 赋予脚本的所有者该执行权限,允许该用户执行该脚本 $ chmod u+x hello.sh # 执行命令,这将使

SHELL脚本的语法知识3

①管理Linux w 查看当前系统的负载 /proc/cpuinfo 保存服务器CPU相关信息 grep -c 'processor' /proc/cpuinfo 计算服务器CPU个数 vmstats 监控系统状态 top 显示进程所占系统资源 sar 监控系统状态 sar -n DEV 查看网卡流量 xargs 把其他命令的输出作为其后命令的输入 find ./ -mtime +10 | xargs rm find *.txt | xargs -n1 -i{} mv {} {}_bak 把后缀

SHELL脚本的语法知识1

① $符号的使用方法:(摘自-网络) $0 这个程式的执行名字$n 这个程式的第n个参数值,n=1..9$* 这个程式的所有参数,此选项参数可超过9个.$# 这个程式的参数个数$$ 这个程式的PID(脚本运行的当前进程ID号)$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)$? 执行上一个指令的返回值 (显示最后命令的退出状态.0表示没有错误,其他任何值表明有错误)$- 显示shell使用的当前选项,与set命令功能相同[email protected] 跟$*类似,但是可

Linux Bash 脚本:自定义延迟代码块(裸数据保存方案)

结合 alias 和 read 用法,可以保存一些将要延迟运行的脚本,或者裸数据(字符串不被扩展)到一个变量中,以备后用. $ alias BEGIN='read -d "" $1 <<"END"' $ BEGIN block1 > ls -la > END $ eval $block1 total 10 drwxr-xr-x 1 Xiaoqian Administ 4096 Nov 5 22:42 ./ drwxr-xr-x 12 Xiao

SHELL脚本的语法知识2

①shell的数值计算 $[[ 空格]$a[空格 ]operator[空格]$b[空格]] 计算时操作符及其操作数必须要用方括号[]括起来,然后用$作为前导符,[空格]表示此处空格可有可无 eg: ` a=2;b=3;echo $[ $a + $b] ` #屏幕输出 5 ②脚本运行时与用户的交互 ` read  x ` 程序运行到此处时会暂停并提示用户输入数值,用户输入完毕并回车后,程序将用户输入的值赋给x,x为任意变量名 eg: ` read x ` ` read -p "please ent

SHELL脚本的语法知识——数值计算

①$[] $[ $a operator $b ] 例: a=2;b=3;  echo $[ $a + $b] # 5 echo $[$a-$b] #-3 echo $[++$a-$b] #0 c=$[$a+$b] # √ c=6 d=$[a+b] # 6 备注:除了自加自减运算符其他都支持;只能进行整数运算;++在操作数前面时不会报错也不会自加;$[]会输出运算结果 ②let let a=b+c 例:a=1;b=2; let c=a+b;echo $c # 3 let c=++a+b;echo

Linux Bash 脚本:自己定义延迟代码块(裸数据保存方案)

结合 alias 和 read 使用方法.能够保存一些将要延迟执行的脚本,或者裸数据(字符串不被扩展)到一个变量中.以备后用. $ alias BEGIN='read -d "" $1 <<"END"' $ BEGIN block1 > ls -la > END $ eval $block1 total 10 drwxr-xr-x 1 Xiaoqian Administ 4096 Nov 5 22:42 ./ drwxr-xr-x 12 Xi