shell基本语法

脚本文件的第一行一般为:#!/bin/bash 

#!是一个约定的标记,他告诉系统这个脚本需要什么解释器来执行,即使用哪一种shell

 

shell变量

定义变量:  num=5       使用变量时要在变量名前加一个$    例:echo $num

注意: 等号的两边不能有空格

     命名只能使用英文字母,数字和下划线,首字符不能以数字开头。

     中间不能有空格,可以使用下划线(_)

    不能使用标点符号

    不能使用bash里的关键字

使用readonly命令可以将变量定义为只读变量,只读变量的值不能被改变。

删除变量:unset num

 

变量类型:

(1)局部变量:局部变量在脚本或命令中定义,近在当前shell实例中有效,其他shell启动的程序不能访问局部变量。

(2)环境变量:所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。

(3)shell变量:shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

 

单引号和双引号

单引号:单引号里的任何字符都会原样输出,单引号字符串的变量是无效的;单引号不识别转义字符,所以单引号里不能出现单独一个的单引号。

双引号:双引号里可以有变量,使用$符号可以直接输出变量的值;双引号可以识别转义字符。

获取字符串的长度: echo ${#string}

截取字符串: echo ${string:1:4}

传递参数

$0  执行的文件名

$1  第一个参数

$2  第二个参数

$#  参数个数

$*  以一个字符串显示所有向脚本传递的参数,如果$*用“”括起来"$*",输出结果像"1,2,3"

$@  以一个单字符串显示所有向脚本传递的参数,如果$@用“”括起来"$@",输出结果像"1","2","3"

$$  脚本运行的当前进程ID号

$!  后台运行的最后一个进程的ID号

$?  显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误

 

数组

定义数组:array_name=(value1 value2 ... valuen)

数组用括号来表示,元素用“空格”符号分开,数组下标从0开始

还可以使用下标定义:array_name[0]=value0

  

读取数组的格式:${array_name[index]}

获取数组中的所有元素:${my_array[*]} 或 ${my_array[@]}

获取数组的长度:${#my_array[*]} 或 ${#my_array[@]}

 

基本运算符

shell一般使用expr来完成算术运算

 

val=`expr 2 + 2`

注意:表达式和运算符之间要有空格,例如2+2是不对的,必须写成2 + 2

 

算术运算符:+加 -减 *乘 /除 %取余 =赋值 ==相等 !=不等于 

关系运算符:-eq是否相等,-ne是否不相等,-gt大于,-lt小于,-ge大于等于,-le小于等于

布尔运算符:!非, -o或, -a与

逻辑运算符:&&与, ||或

字符串运算符:=相等,!=不等于,-z长度是否为0,-n长度是否不为0,$字符串是否为空

 

printf用法

例:printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234

%-10s指宽度为10个字符,-表示左对齐,没有则表示右对齐,任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来

%-4.2f指格式化为浮点数,.2表示保留2位小数