Hi Phone Chan home

shell语法简介

详细信息可以通过man bash来查看

注释

以#开头直到行的结束来表示注释。 在文件的第一行以#!开头是告诉系统用来执行shell的程序,如:

   #!/bin/sh

变量声明和使用

对变量不需要额外的声明语句,直接进行复制就可以了:

   a="value"

变量和值都需要紧跟着=,不能有空格,通过变量$来引用变量,以防和其他文字混淆,可使用{}来区分:

   num=1
   echo $num
   echo "No ${num}nd"

对于参数$#,$@,$0,$1,$2的含义解释:

  $$ is 53310
  $! is 
  $? is 0
  $* is a1 a2
  $@ is a1 a2
  $# is 2
  $* is a1 a2
  $0 is ./maintest.sh
  $1 is a1
  $2 is a2

流程控制

if语句

  if ....; then 
    .... 
  elif ....; then 
    .... 
  else 
    .... 
  fi

大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件 是否存在及是否可读等等… 通常用[ ] 来表示条件测试。注意这里的空格很重要。要确保方括号的空格。 判断文件时需要注意要有引号引着

case语句

  case ... in
  ...)  do sonething
  ;;    # ;;这个为分支的结束
  ...
  *)  # 其他情况
  esac

while语句

  while ... ; do
    ...
  done

for语句

  for var in ... ; do
    ...
  done

函数

函数的声明如下,并且需要先声明再使用。


  functionname()
  {
    ...
  }
  #或者
  function func()
  {
    ...
  }

管道

将一个命令的输出作为另外一个命令的输入,使用 |

  ps -ef | grep keyword

重定向

linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出standard output 1,错误输出:error output 2

  1. 标准输入 (stdin),代码为 0 ,使用 < 或 «
  2. 标准输出 (stdout),代码为 1 ,使用 > 或 »
  3. 标准错误输出(stderr),代码为 2 ,使用 2> 或 2»

重定向输出

重定向输出的格式 像这样 command [1-n] > file或文件操作符或设备,如果指定为文件则将命令的结果输出到文件,而不是标准输出 ; > 写入文件并覆盖旧文件
>> 加到文件的尾部,保留旧文件内容

反短斜杠backtick

反短斜杠 ` 可以将一个命令的输出作为另外一个命令的一个命令行参数

  tar -zcvf lastmod.tar.gz \`find . -mtime -1 -type f -print\`
  #find . -mtime -1 -type f -print为查找过去1天内修改过的文件内容

执行脚本

在脚本的目录下有一个脚本 a.sh

返回值

  func()
  {
    echo "hi"
  }
  b=`func`
  echo $b  #输出 hi

调试


参考

bash shell http://blog.csdn.net/hudashi/article/details/6877351

top
Fork me on GitHub