【Linux杂货铺】期末总结篇4:shell编程

CSDN 2024-08-16 16:07:04 阅读 91

在这里插入图片描述

🌈个人主页:聆风吟_

🔥系列专栏:Linux实践室、网络奇遇记

🔖少年有梦不应止于心动,更要付诸行动。


文章目录

一. ⛳️什么是Shell脚本?二. ⛳️Shell 入门三. ⛳️Shell 变量3.1 🔔变量定义3.2 🔔变量访问3.3 🔔变量类型(未完待续)

四. ⛳️shell 输入输出4.1 🔔变量值输出4.1.1 echo输出4.1.2 printf输出

4.2 🔔变量值输入

五. ⛳️ 数组5.1 🔔数组定义5.2 🔔读取数组元素值

六. ⛳️表达式6.1 🔔算术表达式6.2 🔔逻辑表达式

七. ⛳️Shell 控制结构7.1 🔔分支结构:if语句7.1.1 单分支语句7.1.2 两分支语句7.1.3 多分支语句

7.2 🔔分支结构:case语句7.3 🔔循环结构:for语句7.4 🔔循环结构:while语句7.5 🔔循环结构:until语句

八. ⛳️Shell函数8.1 🔔函数定义8.2 🔔函数调用与参数传递8.3 🔔函数的返回值

📝全文总结

一. ⛳️什么是Shell脚本?

基于Shell语言的语法规则编写而成,支持Linux/UNIX下的命令的调用。

在这里插入图片描述


二. ⛳️Shell 入门

文本编辑工具:<code>vi/vim,gedit

#创建一个文本文件test.sh

vi test.sh

运行Shell脚本的几种方法:

#方法一:为Shell脚本添加可执行权限

#chomd命令:可以给Shell脚本加上执行权限

chmod +x test.sh#给脚本添加运行权限

./test.sh#运行脚本文件,注意./不能省略

#方法二:直接使用Bash或sh来运行Shell脚本

bash test.sh#使用Bash运行Shell脚本

sh test.sh#使用sh运行Shell脚本

#方法三:使用source命令运行Shell脚本

#source命令:强制执行脚本文件的全部命令,并不需要事先修改脚本文件的权限

source test.sh

#也可以简写为如下方式,"."和文件名之间有一个空格

. test.sh


三. ⛳️Shell 变量

3.1 🔔变量定义

#变量的定义格式:

变量名=变量值#等号两边不能有空格

#shell支持以下3种定义变量的方式

VariableName=VariableValue

#如果VariableValue包含了空格符,那么就必须使用引号;单双引号区别在变量访问中讲解。

VariableName='VariableValue'code>

VariableName="VariableValue"code>

3.2 🔔变量访问

#要获取一个变量的值,只须在变量名前面加一个$。

#注意:在对变量重新赋值时,不能在变量名前加$。

author=zp

echo ${author}#输出:zp;

#变量名称的边界

#给变量加花括号 “{}” 可以帮助解释器准确识别变量的边界。

language="Shell"code>

#加{}避免把languageScript当作变量处理

echo "It's a ${language}Script file"#输出:It's a ShellScript file

#引号的使用

#单引号:以单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令,也会它们原样输出

#双引号:以双引号" "包围变量的值时,不是把双引号中的变量名和命令原样输出,而是会先解析里面的变量和命令,然后再输出。

#命令替换 —— 通过命令替换,可达到将命令的执行结果赋值给变量的目的。

#第一种:把命令用反引号` `包裹起来,移植性高。

#第二种:把命令用$()包围起来。

echo "Today is $(date)"

echo "Today is `date`"

3.3 🔔变量类型(未完待续)


四. ⛳️shell 输入输出

4.1 🔔变量值输出

4.1.1 echo输出

echo命令发送数据到标准的输出设备,并以字符串的方式输出一个变量

选项 说明
-e 识别输出内容里面的转义字符
-n 忽略结尾的换行

<code>echo "Hello\tShell"#输出:Hello\tShell

echo -e "Hello\tShell"#输出:HelloShell

echo -n "Hello\tShell"#输出:Hello\tShellzp@lab:~/shell$

4.1.2 printf输出

printf支持格式化输出。printf的默认输出不换行,换行时需要用户手动加 “\n”

printf "Hello\tShell"#输出:HelloShell@lab:~/shell$,识别转义字符,无换行功能

printf "Hello\tShell\n"#输出:HelloShell

printf "%c" $c

4.2 🔔变量值输入

#read命令用于读取标准输入设备的下一行。

read [参数] [变量名]

#输入多个变量值

#从标准输入读取一行(直至遇到第一个空白或换行符),并将第一个词和剩余部分分别赋值给first和last

read first last


五. ⛳️ 数组

5.1 🔔数组定义

Bash Shell只支持一维数组,初始化不需要定义数组大小,数组元素的编号由0开始。

#数组定义格式:

array_name=(value1 value2 ... valuen) #Shell数组用括号来表示,元素之间用空格隔开

#下标定义

array_name[0]=value0

array_name[1]=value1

array_name[2]=value2

#赋值号=的两边不能有空格,其必须紧挨着数组名和数组元素

5.2 🔔读取数组元素值

#读取数组元素值

${array_name[index]}

#获取数组中的所有元素

${array_name[@]}

#或

${array_name[*]}

#获取数组长度

${ #array_name[@]}

#或

${ #array_name[*]}


六. ⛳️表达式

6.1 🔔算术表达式

#使用expr命令时需要注意:操作数(用于计算的数)和运算符之间一定要用空格

val=`expr 100 / 2`

echo $val

#使用$[]表达式进行数学运算,此时不要求运算符与操作数之间有空格

echo $[100/2]

6.2 🔔逻辑表达式

使用test命令及其别名来检查逻辑表达式是否成立。

#test命令的语法格式:

test 逻辑表达式

#用例

test 2 = 2#正确示例:等号前后都有空格

#test命令有一个别名,即左方括号,其语法格式:

[ 逻辑表达式 ]#使用左方括号时,逻辑表达式两边必须有空格

#用例

[ 2 = 2 ]#正确示例:等号前后均有空格,数字与方括号间亦有空格

七. ⛳️Shell 控制结构

7.1 🔔分支结构:if语句

7.1.1 单分支语句

#单分支语句:

if condition

then

语句

fi

#注意:then可以和if写在一行,必须要在condition后面加分号。

if condition; then

语句

fi

condition部分:一般可以使用 “(())” 或者 “[]” 来计算逻辑表达式的值,前者与c的语法规则更加接近,推荐使用。

7.1.2 两分支语句

#两个分支

if condition

then

语句1

else

语句2

fi

7.1.3 多分支语句

#多分支if

if condition1

then

语句1

elif condition2

语句2

elif condition3

语句3

...

else

语句n

fi

7.2 🔔分支结构:case语句

#case、in和esac都是Shell关键字

#expression表示表达式

#pattern表示匹配模式

case expression in

pattern1)

语句1

;;

pattern2)

语句2

;;

pattern3)

语句3

;;

...

*)

语句n

esac

7.3 🔔循环结构:for语句

#c语言风格的for循环,语法格式:

for ((exp1; exp2; exp3))

do

语句

done

# ((sum +=i))做运算等于C语言中sum += i

#python语言风格的for循环,语法格式:

for variable in value_list

do

语句

done

7.4 🔔循环结构:while语句

#while循环用于不断执行一系列命令,直到测试条件为假时才终止循环。

#语法格式:

while condition

do

语句

done

7.5 🔔循环结构:until语句

#until循环用于执行一系列命令,直到所指定的条件为真时才终止循环。

#语法格式:

until condition

do

语句

done


八. ⛳️Shell函数

8.1 🔔函数定义

#Shell函数必须先定义,后使用。代码格式:

[function] 函数名(){

语句序列

[return 返回值]

}

#functin关键字可以省略不写

#如果加上function,则函数名后面的小括号可以省略

function 函数名{

语句序列

[return 返回值]

}

8.2 🔔函数调用与参数传递

#不传递参数,可以直接给出函数名,调用方式:

函数名

#传递参数,函数名后面接参数列表,参数之间以空格分隔。调用方式:

函数名 参数1 参数2 ... 参数n

#函数参数是位置参数的一种,可以使用$n在函数内部接受调用时传递参数。

#$1表示第一个参数,$2表示第二个参数,以此类推。

#可以通过$#获取所传递参数的个数。

#可以通过$@或者$*一次获取所有参数。

8.3 🔔函数的返回值

Shell函数中的return关键字用于表示函数执行的成功与否。返回重要数据时可能事与愿违,尤其是非数值类型的数据。

获取Shell函数返回结果的方法:

直接从函数内部输出数据。使用全局变量。Shell函数中定义的变量默认是全局变量,函数与其所在脚本共享该全局变量。可以使用local关键字定义局部变量。使用内置变量。通过$?这一特殊的内置变量,来获取上一个命令执行后的返回结果。


📝全文总结

今天的干货分享到这里就结束啦!如果觉得文章还可以的话,希望能给个三连支持一下,聆风吟的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是作者前进的最大动力!

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。