当前位置:   article > 正文

shell 脚本学习_shell脚本学习

shell脚本学习

1、#!/bin/bash           指定解释器是 bash(解释器有几种)

2、a=1   给a赋值为1,注意中间不能有空格,赋值时不能有空格

3、unset a    取消变量a

4、readonly  a=10   声明a为只读变量,并且赋值为10,注意这时就不能用unset 来取消变量a了

5、在shell中,变量的默认类型是字符串类型,不能进行数值计算,比如 a=123,这里的 123是字符串

6、变量的值中有空格的话,要用单引号或者双引号括起来

7、export a   可以将变量 a 弄成全局环境变量,这时所有个shell程序都能用 a 这个变量了,但是只能在本 bash中才能使用,切换到其他 terminal 即其他窗口时就不行了

8、特殊变量 $n 比如 $0 $1 这些变量代表着执行脚本时输入的参数,$0是脚本本身,$1-$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10)

9、特殊变量 $# 表示输入参数的个数(脚本本身不算),常用于循环程序中

10、特殊变量 $* 表示这个变量代表命令行中所有的参数(脚本本身不算),S*把所有的参数看成一个整体

11、特殊变量 $@  表示这个变量代表命令行中所有的参数(脚本本身不算),S@ 会把每个参数区分对待

12、特殊变量 $? 表示:(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了

13、拼接字符串  a=$b$c    就可以将 字符串 b和字符串 c拼在一起了, a=aaa$b,aaa跟$b拼在一起

14、运算符:(()) 或者是[]  , 例如: a=1   b=1   $((a+b))     $[a+b],

       还可以用 expr: 例如: expr a + b (中间要有空格)

 15、条件判断

 

 16、case 条件判断

        

17、for循环

         

  1. #!/bin/bash
  2. s=0
  3. for i in 1 2 3 4 10
  4. do
  5. s=$[$s+$i]
  6. done
  7. echo $s
  8. echo ------ \$@ -------------
  9. for i in $@
  10. do
  11. echo $i
  12. done
  13. echo ------- \$* ------------
  14. for i in $*
  15. do
  16. echo $i
  17. done
  18. echo ------ \"\$@\" -------------
  19. # 以下代码就能体现 $@ $*的区别
  20. for i in "$@"
  21. do
  22. echo $i
  23. done
  24. echo ------- \"\$*\" ------------
  25. for i in "$*"
  26. do
  27. echo $i
  28. done

 18、while 循环 (可以用 break)

 19、从终端获得数据类似 scanf:  

 -t 表示在限定时间内要输入数据,不然就继续向后执行代码

-p 表示提示信息

-s 表示不回显,可以用在密码或者按任意键退出的情景下

还有其他的 参数

20、系统函数 basename : 功能是将文件路径中的最后一个文件名提取出来(也可以操作目录)

 21、提取文件的路径:dirname (也可以操作目录)

 22、自定义函数 add,function可写可不写,函数的返回值只能通过 $? 来获取

23、cut 切割:可以用来切割文件,也可以用来切割字符串 

-d 表示 用什么符号来切割          -f 表示要获取第几列数据     3 表示第三列  3-表示第三列之后的

 

 24、sed 流编辑器,一次处理一行内容,处理完成后就把数据送到屏幕,接着处理下一行,直到完成。文件的内容不会受到影响

sed [选项参数]  ‘command’  filename

选项参数  -e 直接在指令列模式上进行sed的动作编辑

 

sed '2a mei nv' sed.txt  :将“mei nv”这个单词插入到sed.txt第二行下

 sed '/wo/d' sed.txt  :      删除sed.txt文件所有包含wo的行

 sed 's/wo/ni/g' sed.txt:将sed.txt文件中wo替换为ni

sed -e '2d' -e 's/wo/ni/g' sed.txt : 将sed.txt文件中的第二行删除并将wo替换为ni

 25、awk : 匹配原则看看正则表达式

 

 26、sort 排序

选项

说明

-n

依照数值的大小排序

-r

以相反的顺序来排序

-t

设置排序时所用的分隔字符

-k

指定需要排序的列

 

 

 

注意:如果在window下编写shell脚本再在Linux系统下跑,可能执行会出错

解决方案1:dos2unix 如果没有该插件 需要安装   sudo apt-get install dos2unix
                    执行 dos2unix shell脚本 转换成功就可以执行运行

解决方案2:在 vi中执行 set ff=unix

 这位老哥总结的更详细

shell脚本语言(超全超详细)_看见代码就想敲的博客-CSDN博客_shell脚本

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/216063
推荐阅读
相关标签
  

闽ICP备14008679号