【魄爺】 发表于 2018-8-21 13:23:19

shell学习杂记(-)

  单引号可以屏蔽任何特殊字符
  双引号可以屏蔽$ 反斜杠\ 反引号`以外的任何特殊字符
  \反斜杠屏蔽任何紧跟其后的单个特殊字符,等于在单个字符上加上单引号
  $#传递给脚本的参数个数
  $0正在执行的命令的名字
  命令若被成功执行,返回的状态码总是0,反之则为非零值,当脚本读到exit就会无条件退出,若exit不指定状态码就会默认采用上一个命令执行后返回的状态码
  case只执行其中符合条件的其中之一,执行完之后跳出,每个分支后面都有两个分号,只有最后一个分支后面的分号可以省略。
  case value in
  va1 ) command
  …
  command ;;
  va2 ) command
  …
  Command ;;
  …
  van ) command
  …
  Command ;;
  esac
  字符串比较
  [ string1 = string2 ]   string1和string2相同
  [ string1 != string2 ]   string1和string2不相同
  [ -n string ]          string不为空
  [ -z string ]          string为空
  整数比较
  [ int1 –eq int2 ]          int1等于int2
  [ int1 –ne int2 ]          int1不等于int2
  [ int1 –gt int2 ]          int1大于int2
  [ int1 –ge int2 ]          int1大于等于int2
  [ int1 –lt int2 ]         int1小于int2
  [ int –le int2 ]         int1小于等于int2
  文件判断
  [ -e file ]               file存在
  [ -d file ]               file为目录
  [ -f file ]               file为普通文件
  [ -r file ]               file可读
  [ -w file ]               file可写
  [ -x file ]               file可执行
  [ -s file ]               file内容不为空
  [ -L file]                file为符号链接
  逻辑操作符
  [ express1 –a express2 ]   条件1和条件2同时满足
  [ express1 –o express2 ]   条件1和条件2至少有一个满足
  [ !express1 ]         条件1不满足
  if test xxx=if
  for循环用来将一组命令循环执行预先确定的遍数,基本格式如下:
  for var in word1 word2 … wordn
  do
  command
  command
  …
  done
  首先将word1的值给变量var执行,之后是word2...in之后有几个值就循环几次
  for的另外一种形式
  for ((i=1;i/dev/null屏蔽输出
  >/dev/null 2>&1这条命令将标准输出和错误输出都重定向到了控设备文件中,也就是都丢弃了,0-标准输入,1-标准输出,2-标准错误输出
  awk '{print NR,NF,$1,$NF,}' file 显示文件file的当前记录号、域数和每一行的第一个和最后一个域。
  shell命令的执行顺序
  1. 命令A && 命令B
  如果命令A执行成功则接下来执行命令B 否则B不会执行
  2. 命令A || 命令B
  如果命令A执行失败则接下来执行命令B,否则B不会执行
  用()和{ }将命令结合在一起
  (命令1;命令2;. . .)
  在当前shell中执行一组命令
  {命令1;命令2;. . .}
  在子shell中执行一组命令
  Ex

  $ cp>  3.组合使用一般为A && B || C
  注意这两个例子:
  ls /tmp/abc && echo "exist" || echo "no exist"
  ls /tmp/abc || echo "no exist" && echo "exist"
  上面第一个是正确的,第二个有问题,为什么?注意&&和||是看$?返回的状态码来决定下一个命令是否执行的。

页: [1]
查看完整版本: shell学习杂记(-)