初学shell脚本

1.1、shell脚本的概念

shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。这种对话方式可是交互也可以是非交互式的,我们所输入的命令计算机是不识别的,这时就需要一种程序来帮助我们进行翻译,变成计算机能识别的二进制程序,同时又把计算机生成的结果返回给我们。

shell脚本就是说我们把原来 linux 命令或语句放在一个文件中,然后通过这个程序文件去执行时,我们就说这个程序为 shell 脚本或 shell 程序;我们可以在脚本中输入一系统的命令以及相关的语法语句组合,比如变量,流程控制语句等,把他们有机结合起来就形成了一个功能强大的shell 脚本。

shell 脚本类似 windows 的批处理文件,shell 脚本就是将连续执行的命令写成一个文件。

1.2、shell脚本构成

shell脚本的符号说明

1. #!:脚步中的第一句,指明执行脚本使用的程序
    示例:#!/bin/bash
2. #:注释,用于帮助信息或者忽略暂时不执行的语句
  示例:# echo “hello”       
  #this is a comment
3. $ 变量替换符号
    示例:a=123;echo $a
4. ${} 变量正规表达式,避免变量名提前截断
    示例:${13}
5. $num 位置参数
    示例:$0,$1,…,${10}
6. $? 最后一个命令的推出状态,一般0表示正确,其他表示错误
    示例: if [ $?-ne 0 ]; then
             echo “encounter error”
        
7. $! 最后一个命令执行的后台命令的ID
    示例:pid=$!
    
8. $$ 运行脚本进程的ID
    示例:pid=$$
9. $* 传递到脚步的参数,加双引号时相当于”$1$2 …”
    示例:echo “Theparameters are $*”
10. $@ 与$*相同,加双引号相当于”$1”“$2” …
    示例:a=$@
11. $# 传递到脚本中的参数个数,不包含$0参数
    示例: echo “theparameter number is $#”
12. $- 保存当前shell的设置信息,如果结果中有i,则表示为交互式shell
    示例: echo $-
13. ;  将多个指令写在同一行上的分隔符
        示例:a=123;echo $a
14. ;; 专用语case选项,作用类似于C语言switch语句中的break
          示例: case${tao} in
            a)      echo “a” ;;
             b)      echo “b” ;;
          esac
15. . 一个表示当前目录,两个表示上一级目录
     示例:cd ..
16. , 类似于C语言中的逗号表达式
     示例:let “t1=((a=5+3,b=7-1,c=15/3))”;echo $t1
17.! 表示逻辑运算法“非”
     示例:if [ “$?”!= “0” ]; then
              echo “Execute error”
              exit 1
        
18. : 在bash中,这是一个内建命令,“什么都不干“,但是返回状态值为0
         示例: :; echo$?; :> f.out     相当于cat/dev/null > f.out
19. ? 通配符,匹配任意一个字符,但是不包括null
         示例:ls f?n
20. ‘’ 将其内容当作字符串,$和通配符均不扩展或者转义
         示例:a=1; echo ‘$a’         结果为$a
21. “” 将其内容作为字符串,但是$可以扩展,通配符不可以
         示例:b=”string”;echo “$b”   结果为string
22. `` 反引号(在键盘数字1左边),其中的字符串会当成命令执行
         示例:a=`date`;echo “$a”
23. () 指令群组,将一串指令括起来,执行时shell会产生subshell来执行它们
         示例:(a=1;echo$a)
24. (()) bash的内建功能,用于算数运算
         示例:a=10;echo$a;((a++)); echo $a
25. [] 同test作用相同,用于表达式真假的判断
         示例: if [ 1-eq 2];then
                                     echo‘kill me’
  
26. [[]] bash对[]的加强版,当中允许使用||和&&,并且可以使用正则表达式
         示例:read ver
                     if [[ $ver > 5 && $ $ver < 9]]; then
                            echo“that’s it”
                     fi
27. {} 指令群组,类似于(),但在当前shell中执行,还可以用于字符串的组合
         示例: mkdir{userA, userB, userC} - {home, bin, data}
28. \<….\> 正则表达式,匹配单词的词首和词尾
         示例: find ‘\<the\>’file
29. + 加法,正则表达式中表示字符重复1~n次
         示例: grep ‘10\+9’file
30. - 减法,标准输入,cd命令中表示上一次的工作目录
         示例: expr 1 -2 + 3; tar -zxfv -; cd –
31. * 乘法,通配符,表示任何字符;一个字符重复0~n次
         示例:let  “var=2*3”; ls zha*t; grep ‘a1[0-9]*’
32. ** 次方运算
         示例:let “var=2**8”
33. / 除法;目录分隔符
         示例:expr 10/2;cd /home/zc
34. % 取余
         示例:expr 10 %2
35. = 赋值;字符串比较,在[]和[[]]中不同(参见==)
         示例: a=”we”;if [ $a == ‘wee’ ]; then exit0 fi
36. == 字符串比较,同单个等号
         示例: a=’we’
                            if[[ $a == w* ]]; then
                                     echo“ok”
                     fi
37. != 字符串比较,不等于
         示例: if [ “$a”!= “$b” ]; then …
38. < 字符串比较,小于;输入重定向
         示例: cat>test < suck.txt
39. << 从标准输入中读取,直到分隔符
         示例: 110<< eof
40. > 输出重定向,文件存在覆盖,不存在则新建
         示例: ls>out 2>&1
41. >> 输出重定向,文件存在追加,不存在则创建
         示例: ls>>out
42. & 后台执行工作符
         示例: tar zcvfdata.tar.gz data >/dev/null &
43. && 逻辑与,短路操作符
         示例: cp 1.txt2.txt && rm 1.txt && echo ‘success’
44. | 管道操作符
         示例: cat file| grep ‘fan’
45. || 逻辑或,短路操作符
         示例: rm 1.txt|| echo ‘fail’
46. ~ 根目录
         示例: cd ~
47. ^ 正则表达式中匹配行的开头
         示例: grep ‘^home’file
48. \ 转义字符,续行符号
         示例: echo “\$A=$A\
                    This is the first line”;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunyanchun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值