一.引言
shell 脚本 (做操作系统配置)
ls , cp , (shell命令)
脚本将多个命令放在一个文件中
shell编程:解释型语言
边翻译边执行
擅长文件处理,操作系统管理
开发效率高 cp 1 2
执行效率低
移植性好
c语言:编译型语言
先编译再执行
擅长数据计算和数据处理
开发效率低
执行效率高
移植性差
shell底层
二.shell脚本编写流程
1.vim XX.sh(新建文件) #!/bin/bash(用哪个命令解析器解析)
2.编写脚本(打印一般用echo)
3.chmod 777 XX.sh(改变文件权限)
4. ./XX.sh (执行)
ll - rwxrwx - x 1 linux linux 32AUG 3 10:35 1.sh*
- 为类型是普通文本,d:目录,b:块设备(储存设备)c:字符设备,p:管道文件(用于共享一些文件)s:套接字
r(读)w(写)x(执行) 第一个为作者权限,第二个为组用户权限(有为r为1 , 无为-为0)
x 为其他用户 linux为作者 和组用户一般情况下一致
三.shell变量
1.环境变量: env(对整个系统作用)
PATH:保存当前工作的默认路径(操作系统)
PWD:当前所在的工作路径
HOME:当前登录用户的家目录
...
main(int argc,char* argv[ ]) (命令行参数)
2.位置变量: ./3.sh /etc/passwd 123 456 内置变量
$0:脚本文件名
$1:传入脚本的第一个参数
$2:传入脚本的第二个参数
...
$9:
$(10) (注意括号)
$#:传入参数的个数
$?:上一句shell命令执行的结果
$$:当前shell的PID
四.shell脚本输入输出
read a (输入)
echo '$a' (注意空格的输入)
a+b;
"":打印字符串,遇到$变量则打印变量中的值
'':打印字符串,遇到$变量依然打印$变量
``:将中间的字符串按照命令打印 (一般放命令)
加减乘除
五.分支语句
1.if语句
if 条件
then (有if或者else if 后面加then)
语句
else
语句
fi
if
then
elif [ ]
then
elif [ ]
then
else
fi
if [ ]
then
fi;
2.case
case $num in
9)语句
;;
8|||)语句
;;
7)语句
;;
*)语句
;;
esac
六.循环语句
1.while
while [ 条件 ] (条件为真)
do
语句
...
done
2.for
for i in
do
语句
...
done
3.until
until [ 条件 ] (条件为假)
do
语句
...
done
七.补充
atoi函数 字符型转数字 包头文件<stdlib.h>
expr函数 表达式命令进行数字运算
*通配符(在数字运算中不能直接输入*得加\即\*)
seq 函数(从几到几)