项目中比较常用的shell脚本命令

项目中比较常用的shell脚本命令

    shell命令执行有两种执行方式:一种是,用户输入一条命令,shell就解释执行一条,这种方式被称为交互式;另一种是,用户事先写好一个 shell脚本,其中会有多条命令,让shell一次把这些命令执行完,而不用一条一条的执行命令,这种方式被称为批处理。

    常见的交互式方式有:cd  ..   或 pwd  等;常见的批处理方式,我们需要写一个shell脚本,例如test.sh。下面我们主要介绍我们项目中需要用到的shell脚本的基本命令及其语法。

编写一个简单的test.sh脚本:

图一

在shell脚本中用#表示注释,相当于Java中的//注释,但是如果#位于第一行开头,并且是#!时则例外,它表示的是该脚本使用后面的编译器/bin/sh解释执行的,第二行表示插入test用户下的环境变量。在写好的shell脚本之后,我们需要给这个脚本添加可执行权限:在Linux可视化窗口执行chmod +x  test.sh,然后这个test.sh这个脚本就可以了,如 sh  test.sh  或  ./test.sh。

shell脚本的基本语法:

变量:Shell变量通常由字母加下划线开头,由任意长度的字母、数字、下划线组成。例如my_name="csp",这里需要注意的是,等号的两边一定不能有空格号。

命令代换:由“`”反引号括起来的也是一条命令,Shell先执行该命令,然后将该命令执行结果立刻代换到当前命令行中。例如执行一个当前目录的代换到变量path_dir中:path_dir=`pwd`,则shell会先执行pwd这个命令,将pwd命令的结果赋值给变量path_dir。

图二

上述脚本中,就是将test数据库中的信息查询结果代换给b这个变量。注意图中用的read  -p 命令是表示等待用户输入一个变量transDate的值。这里我们再介绍一种自动赋值的变量方式,而对这种方式的脚本执行时,一开始就需要进行赋值,脚本编写如下:

图三

执行上述脚本时,命令需要 ./test.sh  20190616,这里的20190616就会自动赋值给${1}。

条件分支:

与C语言类似,在Shell中用if、then、elif、else、fi这几条命令实现分支控制。这种流程控制语句本质上也是由若干条Shell命令组成的,这里我们需要注意到的是如果两条命令写在同一行则序号用(;)分号隔开,如果一行只写一条命令就不需要写分号了;另外then后面有换行,但是这条命令没写完,shell会自动续行,把下一行的命令当成一条命令进行处理,在if命令的参数里,执行结果为0表示真,执行结果非0表示假。例如:

图四

循环:

Shell脚本的for循环结构类似于某些java语言的foreach循环(迭代器),例如

图五

图中,还用到了另一个命令 break,这个命令表示跳出循环。其中 break n,表示可以指定跳出几层循环。说到break时,在shell还有一个命令continue表示跳过,而同样continue有命令 continue  n 表示跳过几层循环。

while的用法和C语言类似,例如:

图六
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。