linux Shell编程入门
为了期末考试,我简单的整理一些linux shell编程的内容,方便我考试梳理的同时,也分享出来。因为距离我考试临近,时日不多了,所以为了考出来得分,我会非常简单
1、变量的声明以及引用
声明
当变量是弱类型的时候,直接使用即可例如
var=123
注意,等号附近不要有空格
当变量是只读的时候:
前面加上readonly
readonly var=123
同时变量名当中除了字母和数字,只能包含下划线,且数字不能是第一个字符
另外,除了常用的数字的声明,还可以声明以下变量
stringType='asdfaf' 单引号包括起来的话,不会解析任何字符
stringType2="what" 当用双引号包含的时候,将会解析特殊字符
The_data=`data` 反引号则是执行系统命令
当然变量的声明还可以使用功能更加强大的declare语句
时间问题这里附上其他地方的教程:https://blog.****.net/wang740209668/article/details/53510863
引用
当我们需要引用一个我们声明过的变量的时候
我们采用这样的形式来引用:
$a(当变量只有一个字符的时候)
${变量名}
2、数组的声明和使用
声明
不需要声明数组长度我们只需要在变量的后面带上中括号和下标即可
例如:
array[0]=1
array[1]=2
当我们对数组进行初始化的时候我们可以使用小括号
例如
char_array=(A B C D)
这里的时候我们就不需要带中括号了我们只需要将初始值用空格隔开即可
当我们想要遍历数组的元素的时候我们可以使用*或者@符号例如
echo "char_array[*/@]"
数组的引用
${数组名[index]}
获取数组长度
array_length=${#数组名[@/*]};
数组的分片访问:
${数组名[@或*]:开始下标:结束下标}
例如for i in ${char_array[*/@]:1:4}
数组的遍历:
for i in ${char_array[*/@]}
3、输入输出
输入
read命令行读取标准输入设备的下一行,标准输入中的新一行到换行符前的所有字符会被读取,并赋值给对应的变量
中间那个命令是我忘记加上${}导致的
输出
输出常用的有echo命令
echo命令的使用在上图有了,为了复习赶时间,我就就弄最基础的了
但是要注意的是
echo -e 是会解析字符串中的转义字符而 echo -n不会
另外就是printf,printf和echo用法几乎一样,为了考试效率我就不多说了
就是换行需要自己在字符串末尾自己添加
4、表达式
算术表达式
最简单的格式
讲需要进行的运算用两个括号包含起来,这样就表示双括号内的字符串是一个算式
另外我们还经常的用的一个就是let
let 命令的使用方法
let后面直接跟一个赋值语句
再另外我们将会使用expr但是expr并没有将计算结果算出来只是赋值了一个字符串给新的变量
原因是,在这里我没有在变量中间加上空格
如果一不小心弄错了可以直接
使用let b=$a 直接把表达式的结果赋值给b
正确的用法应该是这样
5、控制语句
if语句
if [条件语句] ;
then
表达式
else
表达式
if
如果想使用类似C语言里面的else if
linux的shell也有
不过是
elif
用法:
if [条件语句]; then
表达式
elif [条件语句]; then
表达式
else
表达式
fi
当然,else和elif不是必须的
fi就是if语句的结束标志
循环
本来想要自己写的但是发现了一篇非常简答粗暴且比较全面的文章(反正比我全面)
贴个链接:https://www.cnblogs.com/EasonJim/p/8315939.html
当然这里面还得提及的就是break和continue了
break就代表退出循环,但是还有一个break n 的用法,这里表示跳出几层嵌套的循环,例如
我们有三层for循环嵌套
break 2 就代表跳出到第一层循环,即连续跳出两层循环
特别提及一下[条件语句](不只以下这种写法)
linux中一般会用以下几种条件判断命令
${var1} -eq ${var2} var1和var2是否相等
${var1} -ne ${var2} var1和var2是否不等
${var1} -a ${var2} var1和var2相与
${var1} -o ${var2} var1和var2相或
${var1} -lt ${var2} var1是否小于var2
${var1} -le ${var2} var1是否小于等于var2
${var1} -gt ${var2} var1是否大于var2
${var1} -ge ${var2} var1是否大于等于var2
-z ${var1} var1是否为空
-n ${var1} var1是否不为空
6、输出重定向
输出重定向的一般可以用>来进行
比如echo WTF>a.txt
以及剩下的重定向我就不太懂了