bash语句
※ bash格式:#!/bin/bash
“# !” 是一个约定的标记,它告诉系统这个脚本需要什么解释器
1、shell字符串:
字符串可以用单引号,也可以用双引号,也可以不用引号.
单引号字符串:
·单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
·单引号字符串中不能出现单引号(对单引号使用转义符也不行)
双引号字符串:
·双引号里的内容可以有变量
·双引号里可以出现转义字符
拼接字符串: 表示使用多个变量与字符串拼接的变量.
获取字符串长度: ${#’变量名’} 表示对应变量名的字符长度
提取字符串: ${‘变量名’:2:5} 表示从’变量’字符串中的第3个字符开始截取5个字符串
查找字符串: expr index “变量” “查找的字符串” 会根据字符串的位置进行输出.
shell数组:
bash(shell)支持一维数组(不支持多维的),并且没有限定数组的大小.
数组元素的下标由”0″开始编号.获取数组中的元素要利用下标.下标可以是整数或算数表达式,应大于或等于”0″.
2、定义数组:
用括号来表示数组.数组元素用”空格”符号分割开.定义数字的一般形式为:
直接定义 : 数组名=(值1 值2 …值x) | 各个分量定义: 数组名[0]=xxx 数组名[1]=xxx 数组名[2]=xxx
读取数组:
读取数组元素值格式:
${数组名[下标]}
${数组名[@]}与${数组名[*]} 表示获取数组名对应的所有元素.
获取数组长度:
获取数组长度的方法与获取字符串长度的方法相同:
length=${#数组名[@]}
或:
length=${#数组名[*]}
获取数组中单个元素的长度
length=${#数组名[n]}
3、变量:
3.1、变量类型:
1、局部变量:局部变量在脚本或命令中定义,仅在当前shell实例中有效.其他shell启动的程序不能访问局部变量.
2、环境变量:所有的程序,包括shell启动的程序,都能访问环境变量.有些程序需要环境变量来保证其正常运行.必要的时候shell脚本也可以自定义环境变量.
3、shell变量:shell变量时由shell程序设置的特殊变量.shell变量中有一部分是环境变量,有一部分是局部变量.这些变量保证了shelll的正常运行.
3.2、定义变量:
直接变量名赋值就可以:
export 赋值
例:
a=”test”
※ 注意事项:变量名和等号之间不能有空格.以及如下规则:
● 首个字符必须为英文大小写字母“ a-z、A-Z ”
● 中间不能有空格,可以使用下划线 “ _ “
● 不能使用标点符号
● 不能使用bash里的关键字。(即变量名不可以与其他命令相同)
3.3、使用变量:
使用定义过的变量,只要在变量名前加 ” $ ” 即可.(再次赋值时,不需要加 ” $ ” )
例:
name=’test’
echo $name
echo ${name}
变量名的大括号为可选项.为了方便解释器识别变量的边界
{}标识括号内的值为变量
3.4、只读变量:
使用readonly 命令可以将变量属性定义只读.
例:
name=’test’
readonly name
如果再次赋值 name 变量,就会报错。
3.5、删除变量:
unset命令可以删除变量,直接unset “变量名”
例:
unset“a”
删除变量a,a不在是变量
4、for循环格式
#! /bin/bash
for x(变量)in `expr 1 100`(变量的范围)
do (循环语句的开始)
…… (需要循环的命令)
done (循环语句结束)
#! /bin/bash
for ((表达式;表达式;表达式))
do (循环语句的开始)
…… (需要循环的命令)
done (循环语句结束)
for ((i=1(赋给i的原始值为1);i<10(变量i的值小于10);i++(每次循环一次,变量就加一,步进值为1)))
for ((i=1(赋给i的原始值为1);i<10(变量i的值小于10);i=i+2(每次循环一次,变量就加二,步进值为2)))
for ((i=1(赋给i的原始值为1);(表达式为空则无限循环);i++(每次循环一次,变量就加一,步进值为1)))
5、if循环格式
#! /bin/bash
if (条件1)
then (动作1)
elif (条件2)
then (动作2)
…… (命令)
else (匹配不上其他条件后匹配else)
(else的动作)
fi (条件语句的结束)
6、while无限循环格式:
#! /bin/bash
while :
do(循环语句的开始)
…… (需要循环的命令)
done(循环语句的结束)
#! /bin/bash
while true
do(循环语句的开始)
…… (需要循环的命令)
done(循环语句的结束)
7、until 循环格式:
until执行一系列的操作直至条件为真时停止.条件可以为任意测试条件,并且测试发生在循环末尾。因此至少执行一次。
until (循环条件)
do (循环语句的开始)
…… (需要循环的命令)
done (循环语句的结束)
8、printf转义序列:
a | 警告字符,通常为ASCII的BEL字符 |
后退 | |
c | 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略 |
f | 换页(formfeed) |
换行 | |
回车(Carriage return) | |
水平制表符 | |
v | 垂直制表符 |
\ | 一个字面上的反斜杠字符 |
ddd | 表示1到3位数八进制值的字符,仅在格式字符串中有效 |