创建sh文件
touch test.sh //创建sh文件
vi test.sh //编辑sh文件
shell脚本开头(#!/bin/bash)
#!/bin/bash
echo "helloword"
shell执行多行命令操作
#!/bin/bash
cd /home/test
touch test01.txt
echo "I LOVE SHELL" >> test01.txt
Esc退出insert模式
:wq编辑状态-保存退出
cat 打印文件内容-(适合内容少文件)
cat test.txt //展示文件内容
shell系统变量
自定义变量(变量名=变量值)
静态变量
变量定义规则
示例:
定义helloword.sh脚本内容
#!/bin/bash
echo "helloword dahaihaige"
echo $D
定义变量D
D="banzhang love mm"
export??
特殊变量
$数字
$0 //文件名
$1 //第一个参数
$2 //第二个参数
.....
$# 控制台输入参数的总个数-常用于循环
打印出参数的个数
$* 和 $@ 所有参数
执行结果:
$? 判断上一个命令是否执行成功(0-成功,非0-失败)
结果:
运算符 expr
示例:
条件判断
整数间比较大小
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
示例:
[ 3 -ge 2 ] //判断是否 3大于等于2
echo $? //是一个命令操作是否成功
文件权限-读、写、执行
[ -w test.sh ] //判断test.sh文件是否具有写权限 -r 读 -w 写 -x 执行
echo $? //输出 0-成功 非0-失败
文件状态判断-f -e -d
-f文件存在,常规文件
-e文件存在
-d文件存在,是目录
多条件判断&& ||
流程控制
if判断
if [ 3 -gt 2 ]:then //[]与3和2之间有空格,if与[]之间也有空格,3前面和2后面都有空格
echo '"3大于2"
fi
或者
if [ 5 -eq 6 ]
then
echo "5等于6"
elif [ 5 -gt 6 ]
then
echo "5大于6"
el
echo "5小于6"
fi
注意事项:
注意: $1 代表控制台输入的第一个参数,实现动态赋值
if [ 条件表达式1 ]
then
程序1
elif [ 条件表达式2 ]
then
程序2
fi
case语句
case $1 in
18)
echo "18岁"
;; //等价于break
10)
echo "10岁"
;;
*) //等价于default
echo "其他"
;;
esac
for循环
s=0
for((i=1;i<=100;i++))
do
s=$[$s+$i]
done
echo $s
“$*” 和 "$@"
while循环
touch while.sh //创建sh文件
vim while.sh //编辑内容
bash while.sh //执行sh文件
读取控制台输入
-p "提示信息"
-t 7 //等待时间7秒
read控制台输入
basename函数-获取文件名
dirname函数-获取文件绝对路径
自定义函数
cut指定剪切的分割符,输出指定列的内容
示例:输出人名中的姓 //姓和名中间有空格,根据空格分割
sed流编辑器
-e //直接在指令模式上进行sed操作
a //新增
d //删除
s //查找并替换
新增:
删除:
查找并替换:
g 表示global,全部替换
awk文本分析工具
sudo 表示以管理员身份执行命令
cp 复制
./ 表示当前路径
更改所有者
执行脚本
sh 执行sh文件(方法1)
不用具备可执行权限x
sh hello.sh
sh+绝对路径
sh /aa/bb/hello.sh
sh+相对路径
bash 执行sh文件(方法2)
不用具备可执行权限x
bash hello.sh
bash+相对路径
bash /aa/bb/hello.sh
bash+绝对路径
chmod 加权限
chmod 777 hello.sh
777 表示:可读、可写、可执行
./hello.sh 相对路径执行脚本(方法3)
需先赋予可执行权限
.hello.sh
/aa/bb/hello.sh 绝对路径执行脚本(方法4)
需先赋予可执行权限
/aa/bb/hello.sh