Shell scripts容易入门

Shell scripts简单入门

shell脚本其实就是纯文本文档,我们可以编辑这个文档,然后让这个档案来帮助我们一次执行多个指令,或者达成某些特定功能。

注意事项:

  1. 指令的执行时从上到下,从左到右
  2. 指令、选项与参数之间的多个空白都会被忽略掉
  3. 空白行也会被忽略掉,并且tab同样视为空格
  4. 如果读取到一个enter符号,就会尝试改行命令。可以用’\’来转义一个enter。
  5. #后面是批注,不被执行

shell脚本执行方式

  1. 直接当做命令下达:该档案必须有rx权限,然后必须可以找到该命令,即要么通过绝对路径或相对路径,或者利用环境变量PATH
  2. 以bash程序来执行:通过bash shell.sh或许sh shell.sh来执行(shell.sh是我们写好的脚本)。

这时相当于一个子程序中执行,所以在shell.sh中自定义的变量不会保留到父程序当中。除非在脚本中加入export,把自定义变量加入到环境变量

3.用source命令来执行:这时就是在父程序中执行脚本

判断语句

test

例子:

test -e /de  /* 判断/de是否存在 */

Shell scripts容易入门
Shell scripts容易入门
Shell scripts容易入门

[]

例子:

[ -z "$HOME" ] /*  注意空格! */

注意:

  1. []内的每个组件都要用空格隔开
  2. 括号中的变数,最好都以双引号括起来
  3. []中的常数,最好都以单或者双引号括起来

Shell脚本中的参数

默认参数 $0, $1…
例子:比如我一个脚本shell.sh,那么我输入./shell.sh 1 2 3
传给我这个脚本的默认参数是

./shell.sh         1           2        3
  $0              $1          $2        $3

即我可以在我的脚本中$0来表示./shell.sh,$1来表示1。
Shell scripts容易入门

shift

在脚本中使用

shift n 
/* 表示上面的脚本参数要左移n个单位,例如
   shift 1,那么现在的1要用$0来表示
*/

条件判断

利用if then

1.单层,简单条件判断

if [条件];then
   //条件成立时的语句
 fi

2.多重判断

if [条件1];then
    //条件1成立时的语句
elif [条件2];then
    //条件2成立时的语句
else
    //条件1与条件2都不成立时的语句
fi

case判断

语法:
Shell scripts容易入门

function

声明与定义一个function:

function fname()
{
    /* 程序段内容 */
}

function也可以有参数

function print()
{
    echo "the first argument $0"
    /* 这里0代表的是传给print的第一个参数 */
}
print 1 2 3 
/* 这里类似于传给我们shell的参数一样 1是第二个参数 */

循环

while do done, until don done

Shell scripts容易入门

Shell scripts容易入门

for do done

Shell scripts容易入门

这里var可以是前面没有声明的
shell脚本中的这个for循环是知道循环次数的,即con的个数是固定的,所以是一种固定循环

第二种写法:
Shell scripts容易入门

shell脚本的追踪与bug

Shell scripts容易入门