shell脚本编写之初级版
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,1. shell脚本的执行顺序是从上而下的,面向过程。2. 文件名称格式: xxx.sh3. 文件内容的第一行: #!/bin/bash4. shell脚本就是将命令全部融合在一起5. 定义变量she
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
查询数据库中有哪些存储过程
数据库查询时间范围语句
田湾核电站网络安全
软件开发示例项目
计算机网络安全预期达到效果
uniapp使用本地数据库
软件开发产品定价
穿越火线显示服务器加载中
联想服务器默认bmc地址
网络安全手账
浪潮服务器存储管理界面
帝国神话服务器公告
铁路网络安全分几级
app直接连数据库
汇丰银行西安软件开发中心
sql数据库查询程序
订单系统软件开发
南京市网络技术有限公司
普法网络安全吗
服务器远程访问打不开
江苏特色软件开发要多少钱
客户端 软件开发
如何使表格规范在数据库中
西安医信软件开发有限公司
安庆市百事通网络技术服务
新化软件开发专业学校
数据库字段怎么设置小数位数
南京市网络技术有限公司
河北数据库防护箱代理商
网络技术哪些学校好