linux Shell编程入门

为了期末考试,我简单的整理一些linux shell编程的内容,方便我考试梳理的同时,也分享出来。因为距离我考试临近,时日不多了,所以为了考出来得分,我会非常简单

1、变量的声明以及引用

声明

当变量是弱类型的时候,直接使用即可例如

var=123

注意,等号附近不要有空格

当变量是只读的时候:

前面加上readonly

readonly var=123

同时变量名当中除了字母和数字,只能包含下划线,且数字不能是第一个字符

另外,除了常用的数字的声明,还可以声明以下变量

stringType='asdfaf'  单引号包括起来的话,不会解析任何字符

stringType2="what"  当用双引号包含的时候,将会解析特殊字符

The_data=`data`  反引号则是执行系统命令

当然变量的声明还可以使用功能更加强大的declare语句

时间问题这里附上其他地方的教程:https://blog.csdn.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

(再提醒一下,expr中,乘法需要用\*表示而不能直接用*)

正确的用法应该是这样

再者,在我们的作业里面有一题:

请求出1到1000的平方根的和

我们在这里需要用到浮点数的运算

当我们使用浮点数的运算的时候,expr和let以及双括号就已经没用了,所以这里我们需要用到bc或者awk

接下来的截图里面包含了两种用法

因为这不是考试重点,我就不过多赘述了

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

以及剩下的重定向我就不太懂了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值