shell脚本 | 文件 | 进程 | 网络 | HtmlDb |
shell脚本是一系列shell命令的集合。 shell 命令解释器
shell编程:解释型语言、边翻译边执行、擅长文件处理,操作系统管理、开发效率高 cp 1 2、执、效率低、移植性好
C语言:编译型语言、先编译再执行、擅长数据计算和数据处理、开发效率低、执行效率高、移植性差
一、shell脚本编写流程
1.vim XX.sh 第一行写为 #!/bin/bash
2.编写脚本
3.chmod +x XX.sh 也可写为 chmod 777 XX.sh
4../XX.sh
- rwx rwx rwx 1 linux linux 109 Aug 3 15:47 5.sh*
-普通 作者权限 组用户 其他人 硬链接(关联) 作者名 组名 最后写入时间 文件名
b 块设备 r-x -wx r-x
c 字符设备 101 011 101
d 目录 5 3 5
l 软链接 改权限 chmod 535 1.sh
p 管道
S 套接字
二、shell变量
1.环境变量:env(命令)
UTF-8 1~8个字节
PATH:系统路径,保存当前工作的默认路径
2.位置变量
$#:传入参数的个数
$?:上一句shell命令执行的结果 echo $? 为零则为真,为1则为假
$$:当前shell的PID
三、shell脚本输入输出
read a 输入a echo '$a' 输出a
四、打印字符串
" ":打印字符串,遇到$变量则打印变量中的值
' ':打印字符串,遇到$变量依然打印$变量
` `:将中间的字符串按照命令打印
#!/bin/bash
name=linux
echo "请输入姓名" //输入为zhangsan
read name
echo "$name,hello world" //输出为zhangsan,hello world
echo '$name,hello world' //输出为$name,hello world
计算两个数的加减乘除
#!/bin/bash
read a
read b
#bc
c=`expr $a + $b`
echo "a+b $c"
c=`expr $a - $b`
echo "a-b $c"
c=`expr $a \* $b`
echo "a*b $c"
c=`expr $a / $b`
echo "a/b $c"
五、分支语句
1.if语句
if 条件 if if
then then then
语句 语句 语句
else elif fi
语句 then
fi 语句
else
fi
test -eq 相等 -ne 不相等 -gt 大于 -lt 小于 -ge 大于等于 -le 小于等于
test 10 -eq $i [ $i -eq 10 ] if( i == 10) 均为一个变量i和10相等
#!/bin/bash
a=20
b=30
if test $a -gt $b
then
echo "a > b"
fi
if [ $a -lt $b ]
then
echo "a < b"
fi
if后可以用test,也可以用[]进行书写。
输入一个文件名,检测是否有这个文件,如果有这个文件内容为什么,没有则创建该文件并将hello world写入其中。
cat:查看该文件内容
#!/bin/bash
echo "输入文件名"
read filename
if [ -e $filename ]
then
cat $filename
else
touch $filename
echo "hello world" > $filename #输出重定向
fi
输出重定向:把”hello world“输入到filename文件中
test
-b 块设备文件 test -b /dev/usb0
-c 字符设备文件
-d 目录文件
-f 普通文件
-L 链接文件
-S 套接字文件
-p 管道文件
2.case语句
case $num in
9)语句
;;
8|||)语句
;;
7)语句
;;
*)语句
;;
esac
#!/bin/bash
echo "input num 1-10"
read a
case $a in
1)
echo "num is 1"
;;
3|4|5)
echo "num 3-5"
;;
*)
echo "other"
;;
esac
六、循环语句
1.while语句
while [ 条件 ]
do
语句
...
done
#!/bin/bash
i=0
while [ $i -lt 100 ]
do
echo "$i"
#i++;
i=`expr $i + 1`
done
2.for语句
for i in 结束标志
do
语句
...
done
seq:输出某个区间的数,例如seq 20 5 100,输出20到100之间每次隔5的数
#!/bin/bash
for i in `seq 20 5 100`
do
echo "$i"
done
3.until语句
for [条件]
do
语句
...
done
一直执行循环,直到条件满足为止
#!/bin/bash
i=0
until [ $i -eq 100 ]
do
echo "$i"
i=`expr $i + 1`
done