shell脚本编写之初级版
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,1. shell脚本的执行顺序是从上而下的,面向过程。2. 文件名称格式: xxx.sh3. 文件内容的第一行: #!/bin/bash4. shell脚本就是将命令全部融合在一起5. 定义变量she
千家信息网最后更新 2026年10月31日shell脚本编写之初级版1. shell脚本的执行顺序是从上而下的,面向过程。
2. 文件名称格式: xxx.sh
3. 文件内容的第一行: #!/bin/bash
4. shell脚本就是将命令全部融合在一起
5. 定义变量
shell脚本的变量是以:key=value 定义的,注意:=两边不能有空格
静态变量定义:a='www.ruozedata.com'
动态变量定义:b=`date` #变量b是获取当前时间,调用b的时候动态获取当前时间
shell脚本里面使用变量的方法:${变量} ,如使用变量a就应该是${a}。
6. if判断
可以判断:整数、小数 、字符串、文件夹是否存在、文件是否存在 等。
格式: if [空格 xx = yy 空格] 注意:使用单个等号,表达式前后及等号两边各有一个空格。
示例:
if [ '$a' = 'www.ruozedata.com' ]; then
echo "D3"
fi
7. shell中for循环的几个常用写法
第一类:数字性循环
例1:
#!/bin/bash
for((i=1;i<=10;i++));
do
echo $(expr $i \* 3 + 1);
done
例2:
#!/bin/bash
for i in $(seq 1 10)
do
echo $(expr $i \* 3 + 1);
done
例3:
#!/bin/bash
for i in {1..10}
do
echo $(expr $i \* 3 + 1);
done
例4:
#!/bin/bash
awk 'BEGIN{for(i=1; i<=10; i++) print i}'
第二类:字符性循环
例1:
#!/bin/bash
for i in `ls`;
do
echo $i is file name\! ;
done
例2:
#!/bin/bash
for i in $* ;
do
echo $i is input chart\! ;
done
例3:
#!/bin/bash
for i in f1 f2 f3 ;
do
echo $i is appoint ;
done
例4:
#!/bin/bash
list="rootfs usr data data2"
for i in $list;
do
echo $i is appoint ;
done
第三类:路径查找
例1:
#!/bin/bash
for file in /proc/*;
do
echo $file is file path \! ;
done
例2:
#!/bin/bash
for file in $(ls *.sh)
do
echo $file is file path \! ;
done
8. 分割
shell中字符串分割的三种方法:
例1:分割字符串'1,2,3,4,5',以","分割
#!/bin/bash
var='1,2,3,4,5'
var=${var//,/ } #这里是将var中的,替换为空格
for element in $var
do
echo $element
done
例2:分割字符串'mark:x:0:0:this is a test user:/var/mark:nologin',以":"分割
#!/bin/bash
user='mark:x:0:0:this is a test user:/var/mark:nologin'
for((i=1;i<=7;i++))
do
echo $user|cut -d ":" -f$i
done
例3:针对例2写的一种通用的脚本(也使用例1)
#!/bin/bash
user='mark:x:0:0:this is a test user:/var/mark:nologin'
i=1
while((1==1))
do
split=`echo $user|cut -d ":" -f$i`
if [ "$split" != "" ]
then
((i++))
echo $split
else
break
fi
done
9. 赋权限和执行
给shell脚本赋可执行权限: chmod +x xxx.sh
执行shell脚本的命令:./xxx.sh
sh xxx.sh
10. debug模式
在开发中,经常要是用debug模式来排查问题。
现在有两种开启debug模式的方法:
1. 在shell脚本的#!/bin/bash 后面加上 -x: #!/bin/bash -x
#编辑 20180525.sh文件 添加 -x参数后保存退出
[hadoop@hadoop002 ~]$ vi 20180525.sh
#!/bin/bash -x
a='www.ruozedata.com'
b=`date`
echo $a
echo ${a}${b}c/d
#执行20180525.sh 脚本
[hadoop@hadoop002 ~]$ ./20180525.sh
+ a=www.ruozedata.com
++ date
+ b='Fri May 25 14:29:54 CST 2018'
+ echo www.ruozedata.com
www.ruozedata.com
+ echo www.ruozedata.comFri May 25 14:29:54 CST 2018c/d
www.ruozedata.comFri May 25 14:29:54 CST 2018c/d
[hadoop@hadoop002 ~]$
2. 在执行脚本的时候 带上-x参数: sh -x test.sh
#删除20180525.sh脚本里面的 -x参数后,执行执行 sh -x 20180525.sh 命令
[hadoop@hadoop002 ~]$ sh -x 20180525.sh
+ a=www.ruozedata.com
++ date
+ b='Fri May 25 14:30:20 CST 2018'
+ echo www.ruozedata.com
www.ruozedata.com
+ echo www.ruozedata.comFri May 25 14:30:20 CST 2018c/d
www.ruozedata.comFri May 25 14:30:20 CST 2018c/d
[hadoop@hadoop002 ~]$
2. 文件名称格式: xxx.sh
3. 文件内容的第一行: #!/bin/bash
4. shell脚本就是将命令全部融合在一起
5. 定义变量
shell脚本的变量是以:key=value 定义的,注意:=两边不能有空格
静态变量定义:a='www.ruozedata.com'
动态变量定义:b=`date` #变量b是获取当前时间,调用b的时候动态获取当前时间
shell脚本里面使用变量的方法:${变量} ,如使用变量a就应该是${a}。
6. if判断
可以判断:整数、小数 、字符串、文件夹是否存在、文件是否存在 等。
格式: if [空格 xx = yy 空格] 注意:使用单个等号,表达式前后及等号两边各有一个空格。
示例:
if [ '$a' = 'www.ruozedata.com' ]; then
echo "D3"
fi
7. shell中for循环的几个常用写法
第一类:数字性循环
例1:
#!/bin/bash
for((i=1;i<=10;i++));
do
echo $(expr $i \* 3 + 1);
done
例2:
#!/bin/bash
for i in $(seq 1 10)
do
echo $(expr $i \* 3 + 1);
done
例3:
#!/bin/bash
for i in {1..10}
do
echo $(expr $i \* 3 + 1);
done
例4:
#!/bin/bash
awk 'BEGIN{for(i=1; i<=10; i++) print i}'
第二类:字符性循环
例1:
#!/bin/bash
for i in `ls`;
do
echo $i is file name\! ;
done
例2:
#!/bin/bash
for i in $* ;
do
echo $i is input chart\! ;
done
例3:
#!/bin/bash
for i in f1 f2 f3 ;
do
echo $i is appoint ;
done
例4:
#!/bin/bash
list="rootfs usr data data2"
for i in $list;
do
echo $i is appoint ;
done
第三类:路径查找
例1:
#!/bin/bash
for file in /proc/*;
do
echo $file is file path \! ;
done
例2:
#!/bin/bash
for file in $(ls *.sh)
do
echo $file is file path \! ;
done
8. 分割
shell中字符串分割的三种方法:
例1:分割字符串'1,2,3,4,5',以","分割
#!/bin/bash
var='1,2,3,4,5'
var=${var//,/ } #这里是将var中的,替换为空格
for element in $var
do
echo $element
done
例2:分割字符串'mark:x:0:0:this is a test user:/var/mark:nologin',以":"分割
#!/bin/bash
user='mark:x:0:0:this is a test user:/var/mark:nologin'
for((i=1;i<=7;i++))
do
echo $user|cut -d ":" -f$i
done
例3:针对例2写的一种通用的脚本(也使用例1)
#!/bin/bash
user='mark:x:0:0:this is a test user:/var/mark:nologin'
i=1
while((1==1))
do
split=`echo $user|cut -d ":" -f$i`
if [ "$split" != "" ]
then
((i++))
echo $split
else
break
fi
done
9. 赋权限和执行
给shell脚本赋可执行权限: chmod +x xxx.sh
执行shell脚本的命令:./xxx.sh
sh xxx.sh
10. debug模式
在开发中,经常要是用debug模式来排查问题。
现在有两种开启debug模式的方法:
1. 在shell脚本的#!/bin/bash 后面加上 -x: #!/bin/bash -x
#编辑 20180525.sh文件 添加 -x参数后保存退出
[hadoop@hadoop002 ~]$ vi 20180525.sh
#!/bin/bash -x
a='www.ruozedata.com'
b=`date`
echo $a
echo ${a}${b}c/d
#执行20180525.sh 脚本
[hadoop@hadoop002 ~]$ ./20180525.sh
+ a=www.ruozedata.com
++ date
+ b='Fri May 25 14:29:54 CST 2018'
+ echo www.ruozedata.com
www.ruozedata.com
+ echo www.ruozedata.comFri May 25 14:29:54 CST 2018c/d
www.ruozedata.comFri May 25 14:29:54 CST 2018c/d
[hadoop@hadoop002 ~]$
2. 在执行脚本的时候 带上-x参数: sh -x test.sh
#删除20180525.sh脚本里面的 -x参数后,执行执行 sh -x 20180525.sh 命令
[hadoop@hadoop002 ~]$ sh -x 20180525.sh
+ a=www.ruozedata.com
++ date
+ b='Fri May 25 14:30:20 CST 2018'
+ echo www.ruozedata.com
www.ruozedata.com
+ echo www.ruozedata.comFri May 25 14:30:20 CST 2018c/d
www.ruozedata.comFri May 25 14:30:20 CST 2018c/d
[hadoop@hadoop002 ~]$
脚本
变量
字符
文件
字符串
空格
参数
命令
方法
模式
循环
动态
时候
时间
格式
等号
一行
内容
写法
单个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技企业和互联网企业
金融科技创新监管互联网金融
九亚互联网科技
赫美联合互联网科技
伴你行互联网科技有限公司
上游互联网科技
金融科技和互联网金融
科技大学互联网专业好不好
青海省互联网新科技
科技互联网的估值
宁波青枫互联网科技有限公司
互联网科技寓意
翼展科技 首家互联网医院
长沙互联网科技
中科明德北京互联网科技
南通创西澳互联网科技有限公司
皮皮虾互联网科技有限公司
江苏互联网智能科技软件
世界互联网科技成果奖
第三届互联网大会安防黑科技
咖啡网
互联网品科技
互联网科技未来
没上市的科技互联网公司
广州互联网络科技有限公司
成都玖崟互联网科技有限公司乐商圈怎么样
互联网媒体平台算高科技产业
南通创西澳互联网科技有限公司
九思连强互联网电子科技有限公司
互联网领先科技成果宣传视频