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字符
\b
后退
\c
抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
\f
换页(formfeed)
\n
换行
\r
回车(Carriage return)
\t
水平制表符
\v
垂直制表符
\\
一个字面上的反斜杠字符
\ddd
表示1到3位数八进制值的字符,仅在格式字符串中有效
\0ddd
表示1到3位的八进制值字符

9、bash脚本命令

命令 解释
source a.sh
执行shlle脚本a.sh
 
./a.sh 执行shell脚本a.sh
前提:有执行权限足够
执行权限添加:chmod U+x a.sh
 
env 查看全部环境变量  
export 添加环境变量  
expr 添加本地变量  
read 用户手动赋值  
read -p“提示是信息” 用户手动进行赋值,引号里面加的是提示信息  
pstree 查看进程树  
sh -n 后面跟shlle脚本文件名,检查编辑的shlle脚本是否有语法错误  
let 做算术运算 let a=$i+1
运算$i+1的值赋给a
break 跳出当前循环  
echo $? 测试上条命令是否成功,回显0为成功,回显其他都为失败  

10、bach脚本参数

命令 解释
-ge
 大于或等于  
-gt
 大于  
-le
 小于或等于  
-lt
 小于  
-eq
 等于  
-f
 判断文件是否存在 #! /bin/bash
if [ -f $a.out ]
then
echo $a.out
fi
-d
 判断目录是否存在 #! /bin/bash
if [ -d $aaa ]
then
echo $a.out

版权声明:本文为APeng2019原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/APeng2019/p/10719368.html