shell script的简单介绍

shell变量

1.命名规则

2.定义变量:name=value
3.使用变量:$name
4.只读变量:readonly name
5.删除变量:uset name
6.变量类型

shell字符串

  1. 双引号:可解析变量,可以出现转义字符
  2. 单引号:不解析变量,原样输出
  3. 字符串拼接:
name="hello"
# 使用双引号拼接
greeting="hello, "$name" !"
greeting_1="hello, $name} !"
echo $greeting  $greeting_1
# 使用单引号拼接
greeting_2='hello, '$name' !'
greeting_3='hello, ${name} !'
echo $greeting_2  $greeting_3

输出结果为:

hello, hello ! hello, hello} !
hello, hello ! hello, ${name} !
  1. 获取字符串长度
string="abcd"
echo ${#string} #输出 4
  1. 提取子字符串
string="hello world"
echo ${string:1:4}#输出 ello
# 字符串下标从0开始
  1. 查找子字符串
string="hello world"
echo `expr index $string e`#输出2

7.反引号和$()一样,里面的语句当作命令执行

shell数组

  1. 数组定义:arrname=(value0 value1 value3)
  2. 数组读取:${arrname[]},中括号内为数组下标,从0开始
  3. 获取数组长度:length=${#arrname[@]},*号也可以
  4. 或许数组单个元素的长度:lengthn=${#arrname[n]},n为数组下标

shell注释

  1. 单行注释:#
  2. 多行注释:<<EOF以EOF结束,EOF可以是任意字母

shell传递参数

  1. 向脚本传参
  1. 特殊参数

shell运算符

  1. 算数运算符

假设变量a=10,b=20

  1. 关系运算符
  1. 逻辑运算符
  1. 布尔运算符
  1. 字符串运算符
    假设变量a=hello,b=world
  1. 文件测试运算符

流程控制

  1. if 语句语法格式:
if condition
then
    command1
    command2
    ...
    commandN
fi
  1. if else 语法格式:
if condition
then
    command1
    command2
    ...
    commandN
else
    command
fi
  1. if else-if else 语法格式:
if condition1
then
    command1
elif condition2
then
    command2
else
    commandN
fi

for循环一般格式为:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done
  1. while 循环一般格式
while condition
do
    command
done
  1. until 循环一般格式
until condition
do
    command
done
  1. case in格式
case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac
  1. 跳出循环:

函数定义

输入输出重定向

  1. 文件描述符
  1. stdin<file 标准输入重定向
  2. stdout>file 标准输出重定向
  3. stderr>>file 标准错误输出重定向,以追加的方式

shell文件包含

  1. .filename
  2. source filename
06-03 01:11