xxl520 发表于 2018-8-27 12:48:24

shell编程详解(二)

  文件测试:
  -e file:测试文件是否存在
  -f file:测试文件是否为普通文件
  -d file:测试指定路径是否为路径
  -r file:测试当前用户对指定文件是否有读权限
  -w file:测试当前用户对指定文件是否有写权限
  -x file:测试当前用户对指定文件是否有执行权限
  测试shell是否有语法错误
  bash -n xx.sh:能够见到判断脚本语法是否有错误
  bash -x xx.sh:单步执行,用于脚本调试
  定义脚本退出状态码:
  exit:退出脚本
  exit n: 0表示正常退出,1-255表示错误退出
  如果脚本没有明确定义退出状态码,那么最后执行的一条命令的退出码即为脚本的退出状态码
  特殊变量:
  $?:上一个命令退出状态
  $#:参数的个数
  $*:参数列表
  $@:参数列表
  位置变量:shift
  sed用法
  sed:Stream Editor,行编辑器,默认不编辑原文件,仅对模式空间中的数据处理
  sed 'AddressConmand' file...
  -n:静态模式,不再默认显示模式空间的内容
  -i:直接修改原文件
  -e script -e script:可以同时执行多个脚本
  -f sedfile:可以将多个脚本放在一个里面
  sed -f sedfile file
  -r:表示使用正则表达式
  Adress:
  1、StartLine,EndLine
  比如:1,100
  $:表示最后一行
  2、/REGEXP/
  比如:/^root/
  3、/pattern1/,/pattern2/
  第一次被pattern1匹配到的行开始,至第一杯pattern2匹配到的行结束,这中间的所有行
  4、LineNumber 指定的行
  5、StartLine,+N
  从Startline开始,向后的N行
  Command:
  d:删除符合条件的行
  p:显示符合条件的行
  a \string:在指定的行后面追加新行,内容为string
  \n:可以用于换行
  i \string:在指定的行前面添加新行,内容为string
  r FILE:将指定的文件的内容添加至符合条件的行处
  w FILE:将地址指定的范围内的行另存至指定的文件中
  s/pattern/string/:查找并替换,默认只替换每行中第一匹配被模式匹配到的字符串
  加修饰符:
  g:全局替换
  i:忽略大小写
  s///:也可以用s###,s@@@
  &:引用模式匹配整个串
  例如:
  l..e:like ->liker
  love ->lover
  sed 's#\(l..e\)#&r#g' xx.txt 或者 sed 's#\(l..e\)#\1r#g' xx.txt

页: [1]
查看完整版本: shell编程详解(二)