shell脚本语法要点

1.系统变量

 $SHELL      $USER           $HOME          $PWD

2.自定义变量

A=2(赋值符号前后不能有空格)   通过echo $A进行使用。

定义全局变量 : export A=2

3.特殊变量:

$n

 n为数字,$0代表该脚本名称,$1~$9代表第一到第九个参数,十以上的参数需要使用大括号包含,如${10}。

$#

获取所有输入参数个数,常用于循环,如:./a.sh cls xs a  则$#为3。

$*

这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体。

$@

这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待。

$?

这个变量表示最后一次执行的命令返回的状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行不正确了。

4.运算符

基本语法为:$(())运算式,或$[运算式]或expr +,-,\*,/,%,注意expr运算符间要有空格

计算(2+3)*4的三种方式:

5.条件判断

(1)两个证书之间的比较

= 字符串比较          -lt 小于(less than)       -le  小于等于(less equal)    -eq  等于(equal)

-gt  大于(greater than)                -ge  大于等于(greater equal)             -ne  不等于(not equal)

(2)按照文件权限进行判断

-r 有读的权限(read)           -w 有写的权限(write)           -x 有执行的权限(execute)

(3)按照文件类型进行判断

-f      文件存在并且是一个常规的文件(file)

-e     文件存在(existence)

-d     文件存在并是一个目录(directory)

(4)多条件判断

(&&表示前一命令执行成功时,才执行后一条命令,||表示上一条命令执行失败后,才执行下一条命令。)

6.if判断(流程控制)

语法:

if [ 条件判断式 ];then

    程序

fi

或者:

if [ 条件判断式 ]

    then

       程序

fi

注意事项:(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格。(2)if后要有空格。

7.case语句

语法:

case  $变量名 in

“值1”)

     如果变量的值等于值1,则执行程序1

;;

‘’值2‘)

    如果变量的值等于2,则执行程序2

;;

...

*)

    如果变量的值都不是以上的值,则执行此程序

;;

esac

注意事项:case 行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。

8.for循环

语法1:

for ((初始值;循环控制条件;变量变化))

  do

       程序

 done

语法2:

for 变量 in 值1 值2 值3 ...

do

     程序

done

9.while循环

语法:

while [ 条件判断式 ]

do

       程序

done

10.read读取控制台输入

语法:read(选项)(参数)

选项:-p:指定读取值时的提示符;-t:指定读取值时等待的时间(秒)。

参数:变量:指定读取值的变量名

11.函数

11.1系统函数

basename函数,语法:basename [string/oathname] [suffix]        功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。

选项:suffix为后缀,如果suffix被指定了,basename会将path那么或string中的suffix去掉。

dirname函数,文件绝对路径    功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录部分),然后返回剩下的路径(目录部分)。

11.2自定义函数

语法:

[ function ] funname[()]

{

          action

          [return int;]

}

funname

总结:(1)必须在调用函数之前先声明函数,shell脚本是逐行运行。不会像其他语言一样先编译。

(2)函数返回值,只能通过$?系统变量获得,可以显示加,如果不加,将以最后一条命令运行结果作为返回值。return后跟数值n(0-255)。 

12.shell工具

12.1 cut

cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。

语法:cut [ 选项参数 ] filename

选项参数:-f 列号,提取第几列。

                  -d分隔符,按照指定分隔符分割列。

12.2 sed       

sed 是一种流编辑器,它一次处理一行内容 。处理时,把当前处理的航存储在临时缓冲区中,成为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,知道文件末尾。文件内容并没有改变,除非你是用重定向存储输出。

语法:sed [选项参数] ‘command’ filename

选项参数:-e     功能:直接在指令列模式上进行sed的动作编辑,适用于多个命令。

命令功能描述:a   新增,a的后面可以接字符,在下一行出现

                         d   删除

                         s   查找并替换

12.2.1    在第二行后添加文字:           

                 

12.2.2  删除第三行         

                         

12.2.3    替换某个单词             

12.2.4 先增加数据,在替换(两个命令)

12.3 awk

语法:awk [选项参数] “pattern1{action} pattern2{action2}...” filename

pattern:表示awk在数据中查找的内容,就是匹配模式

action:在找到匹配内容时所执行的一系列命令。

选项参数:-F 指定输入文件折分隔符

                   -v  赋值一个用户定义变量   

12.3.1查找以root开头的第一列,并打印出第七列

awk -F : '/^root/ {print $7}' passwd                                                                                                                                                                   

12.3.2查找出以root开头的所有列,并打印出第一列和第七列

awk -F : '/^root/ {print $1","$7}' passwd 

12.3.3查找出第一列和第七列,在开头添加user,shell在末尾添加ribenren,sha

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值