shell脚本编写之初级版
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,1. shell脚本的执行顺序是从上而下的,面向过程。2. 文件名称格式: xxx.sh3. 文件内容的第一行: #!/bin/bash4. shell脚本就是将命令全部融合在一起5. 定义变量she
千家信息网最后更新 2025年01月23日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安全错误
数据库的锁怎样保障安全
网络技术运用书本
软件开发学校都有哪些
sql查看服务器端口
翔锐网络技术郑州
安卓系统需要几个软件开发人员
中文科技期刊数据库怎么查看
江西标准软件开发代理价格
魔兽世界tbc 人口最多服务器
网络安全商务总结
哈尔滨打车用什么软件开发
哪里的mysql建立数据库
gis软件开发代码
云服务器磁盘管理进行分区
重装数据库
win2003服务器密码
互联网网络技术发展趋势
默认服务器组件检查失败怎么解决
互联网是高科技行业吗
互联网促进科技发展申论
打印服务器行业动态
软件数据库无法启动不了
电子科技大 互联网交叉复合
t440服务器主板大小
专科软件开发好就业嘛
网络安全日总结报告
网络安全保密ppt
数据库建立不了关系怎么办
西安铁程网络技术有限公司电话
网络技术对能力的要求
贵州睿蝶网络技术公司