linux 中的所有的命令基本上是shell的程序
Shell 是一个用C语言编写的程序,它是用户使用 Linux 的桥梁。
Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序(不是系统程序),这个应用程序提供了一个界面,用户通过这个界面访问操作系统
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。 脚本中常用到较多的Linux命令,简称shell脚本
Shell 编程只要有一个能编写代码的文本编辑器vi和一个能解释执行的脚本解释器就可以了。/bin/bash 推荐使用,标准解释器
Linux 的 Shell 种类众多,常见的有:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash) 推荐使用,标准解释器
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
- Bourne Again Shell
(1)、由于易用和免费,Bash 在日常工作中被广泛使用。
(2)、Bash 也是大多数Linux 系统默认的 Shell。
将许多命令写在一起,让用户很轻松的就能执行一个文件的Shell脚本,就能够一次执行多个命令
<1> 使用vi来编写shell脚本。
<2> 脚本第一行格式: #!/bin/bash 符号#!用来指定该脚本文件的解析程序,这里使用的是bin目录下的bash解析器.
<3> chmod +x filename.sh 授予所有用户对filename.sh 可执行的权限
Shell 脚本的编写
eg:#!/bin/bash
echo “hello world!” 编写完成之后,按esc退出编辑模式,使用:wq!保存并退出
例如:Shell脚本名为hello.sh
<1>执行方法1:
./hello.sh
<2>执行方法2:
/bin/bash hello.sh
这种方法不需要执行权限
变量名=变量值
变量值一般存在数值,布尔,字符串等类型的内容
<1>首个字符必须为字母(a-z,A-Z)。
<2>中间不能有空格,可以使用下划线(_)。
<3>不能使用标点符号。
<4>不能使用bash里的关键字(if, fi, then等)
使用一个定义过的变量,只要在变量名前面加美元符号$即可。
height=170
name=“瑞瑞”
is_passed=false false 假, true 真
变量访问时,使用
$
变量名, 或${变量名}
其中,变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
【扩展】命令行的参数变量, $1 表示是命令行执行脚本时,在文件名后输入的数据,
./s1.sh 100
以"#"开头的行就是注释,会被解释器忽略。 sh里没有多行注释,只能每一行加一个#号。
算数运算符 、关系运算符、布尔运算符 、字符串运算符 、文件测试运算符
数学运算的这种写法: $(()) ,对括号内的表达式求值,这样声明了一个整型数数据.
格式:$(()),两组小括号的作用:计算表达式的结果
假定变量 a 为 10,变量 b 为 20 $((a+b))计算a+b的值
$a + b 、 b 、 b、a - b 、 b 、 b、a * b 、 b 、 b、b / a 、 a 、 a、b % a 、 a = a 、a= a、a=b 、 ( ( a = = b ) ) 、 (( a == b ))、 ((a==b))、(( a != b ))
格式:[ 操作数1 -gt 操作数2 ]返回结果是true,false
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
-eq(相等):[ $a -eq $b ]、-ne(不相等)、-gt (大于)、-lt(小于)、-ge(大于等于)、-le(小于等于)
格式:[ 布尔值或关系表达式1 -o 布尔值或关系表达式2 ]
-a(与就是且)、-o(或)、!(非就是取反)
=(相等)、!=(不相等)、-z(长度不为0真)、-n(长度为0真)、str(不为空真)、name=“”(空字符串)
格式:[ -d 文件名或目录名 ]
-d(目录)、-f(文件)、-r(可读)、-w(可写)、-x(可执行)、-s(文件大小大于0)、-e(文件或目录存在)
Shell中的 test 命令用于检查某个条件是否成立。
if test -e filename ;then
fi
if [判断条件] ;then
输出结果1
输出结果2
…
fi
if [条件1] ;then
输出结果1
elif [条件2 ] ;then
输出结果2
else
其他输出结果
fi
<1>while ((判断的条件)) ;do
程序段
done<2> while((1));do
if [ 条件表达式 ]; then
break
fi
done
#!/bin/sh
n=1 (定义以一个int变量,初始值为1)
while(( $n<=5 )) ;do
echo $n
let “n++” (重复要做的程序段)
done
let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量
break命令 :允许跳出所有循环(终止执行后面的所有循环)。
continue命令与break命令类似,它不会跳出所有循环,仅仅跳出当前循环。
跳出循环
基本结构:
for (( 初始值; 条件; 运算语句 )) ;do 程序段
done
eg:使用for循环打印出1到10之间的数
#!/bin/sh
for((i=1;i<=10;i++));do
echo $i;
done;
注:初始值只执行一次,条件每次都会执行程序段执行后执行运算语句
for 变量名 in 数组对象
do
程序段
done
定义数组 数组名=(元素1 元素2 … 元素n)
访问数组, 基于索引下标,下标是从0开始
数组名[下标]=元素值
echo ${数组名[下标]} 显示指定下标的元素
echo ${数组名[@]} 显示数组的所有元素
迭代数组
for n in ${数组名[@]};do
echo $n
done
数据的长度 ${#数组名[@]}
$*, $@ 所有参数
$# 参数的个数