你对这些必要的Linux shell有什么了解吗?

发布者:上海IT外包来源:http://www.lanmon.net点击数:1221

在Linux下使用shell编程通常可以大大简化我们的工作。你有下面的必要知识吗?
输入参数和默认变量
对于shell脚本,一些内容专用于处理参数,它们都具有特定的含义,例如:
/home/shouwang/test.sh para1 para2 para3
$ 0 $ 1 $ 2 $ 3
脚本名称第一个参数第三个参数
其中$ 0表示执行脚本的名称,$ 1,$ 2分别代表第一个和第二个参数。除此之外,还有一些其他默认变量,例如:
#表示脚本遵循的参数数量,前一个示例有3个参数
$ @表示所有参数,可以遍历
$ *表示所有参数,整体而言,与$ *非常相似,但存在差异
$$表示当前脚本的进程ID
$?表示上一个命令的退出状态
变量
要为变量赋值,请使用等号,但等号的两侧必须没有空格。带有等号右侧空格的字符串也必须用引号括起来:
Para1='hello world'#string直接赋值给变量para1
Unset用于取消变量。例如:
未设置para1
如何使用变量?使用变量时,需要在变量前添加$,例如打印前一个para1的内容:
Echo'para1是$ para1'
#将输出para1是hello world
或者在变量名称周围添加大括号:
Echo'para1是$ {para1}!'
#将输出para1是hello world!
命令执行
在shell中执行命令通常只需要执行命令,就好像它们在终端中一样。但是,如果要打印命令结果,则无效。因此,shell的命令模式通常是:
a=`ls`#`是左上角〜键,而不是单引号
或者使用$,然后在括号中执行命令:
Echo'当前路径是$(pwd)'#另外,前两种方法不适用于计算表达式,但方法如下:
回声'1 + 1=$((1 + 1))'#Print:1 + 1=2
也就是说,$用两个括号括起来表达要评估的表达式。
那么如果要执行的命令存储在变量中呢?前面的方法是不可行的,当然,括号的内容被视为命令执行或建立。要使用以下方法,例如:
一个='ls' 的
回声'$($ a)'
但是,如果字符串有多个命令,则上述方法不可行,但使用以下方法:
一个='LS; PWD'
Echo'$(eval $ a)'v
这是使用eval,a的内容作为命令执行。
条件分支
一般来说,如果命令执行成功,则返回值为0,否则为非零。因此,可以通过以下方法判断先前命令的执行结果:
如果[$? -eq 0]
然后
回声'成功'
Elif [$? -eq 1]
然后
Echo'失败了,代码是1'
其他
回声'其他代码'
网络连接
案例陈述的使用如下:
NAME='AA'
Case $ name in
'AA')
Echo'名字是$ name'

'')
Echo'名字是空的'

'BB')
Echo'名字是$ name'

*)
Echo'其他名字'

ESAC
初学者需要特别注意以下几点:
[]前面必须有一个空格,这是一个逻辑表达
如果elif后面跟着那么,那么要执行的语句
如果要打印上一个命令的执行结果,最佳做法是分配$?变量,因为一旦执行命令,$的值为?可能会改变。
案件的每个分支以两个分号结束,最后案例以反向书写,即esac。
如何使用多种条件,两种方式,一种方式:
如果[10 -gt 5 -o 10 -gt 4];那么
回声'10>
5或10>
4'
网络连接
方法2:
如果[10 -gt 5] || [10 -gt 4];然后回声'10>
5或10>
4'
网络连接
其中-o或||意思是。这里也有一些共同的条件决定。
总结如下:
o或者,相同的||
-a和with,&&&
!非
整数判断:
-eq这两个数字是否相等?
-ne这两个数字是否相等
-gt前者大于后者(大于)
- 前面是否小于后者(小于)
- 前者是否大于或等于后者(大于或等于)
-le前者是否小于或等于后者(小于或等于)
字符串判断str1 exp str2:
-z'$ str1'str1是否为空字符串
-n'$ str1'str1不是空字符串
'$ str1'=='$ str2'str1是否等于str2
'$ str1'!='$ str2'str1是否等于str2
'$ str1'=〜'str2'str1包含str2
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部