编写shell脚本

1、shell脚本的第一行指定要使用的shell,其格式为:#!/bin/shell

2、执行shell脚本

  • 将shell脚本文件所处的目录添加到PATH环境变量中
  • 在提示符中用绝对或相对文件路径来引用shell脚本文件

3、检查shell脚本执行权限,若无权限,使用chmod赋予执行文件的权限

4、显示消息

  • echo +text:如echo This is a test
  • echo+包含引号的text:使用单引号或双引号将字符串圈起来,如:echo 'say "bye"',echo "Let's go"
  • echo  -n +"text: ":在字符串同一行显示命令输出

5、脚本中的$符号为引用过一个环境变量,可以通过来转义,实现$本身的意义,如:$15。

6、用户变量可以是任何不超过20个字母、数字或下划线的文本字符串,用户变量区分大小写。值通过等号赋给用户变量,且变量、等号和值之间不能出现空格,如:var=11。

7、重定向

  • command >outputfile:输出重定向,将命令的输出发到outputfile文件中,outputfile可以新建或覆盖
  • command >>outputfile:输出重定向,将命令的输出发到outputfile文件尾部,outputfile可以新建或尾部追加
  • command <inputfile:输入重定向,将文件的内容重定向到命令
  • command << marker

     data

    marker

  在命令行输入重定向的数据

  • command | command |command:命令重定向,将一个命令的输出重定向到另一个上

8、数学运算

  • 使用美元符和方括号$[operation]将数学表达式圈起来,如:var1=$[1+5]
  • 使用bc支持浮点运算,格式:variable=`echo "options;expression" | bc`,如:var1=`echo "scale 4;3.14/5" | bc`

9、状态码

  • 查看退出时的状态码:echo $?
  • 声明退出的状态码:exit num

10、结构化命令

  • if-then-else:

    if command

   then

    commands

   else

    commands

   fi

  •  嵌套if:

  if command1

  then

    commands

  elif command2

  then

    commands

  fi

  • test命令:[ condition ](注意空格),可以判断三类条件:数值比较、字符串比较、文件比较,如:

  if [ condition ]

  then

    commands

  fi

  • (( expression )):expression可以是任意的数学赋值或比较表达式
  • [[ expression ]]:expression可以定义一个正则表达式来匹配字符串值
  • case 命令

  case variable in

  pattern1 | pattern2) commands1;;

  pattern3) commands2;;

  *) commands;;

  esac

原文地址:https://www.cnblogs.com/coffeebar/p/5238764.html