shell的进阶编程
2019-06-17 00:06
1486 查看
shell的进阶编程
关于for
for 变量名字 in 列表;do
循环体
done
例如
for: for NAME [in WORDS ... ] ; do COMMANDS; don其中前面的name就是个变量名,而且不需要加$,每次循环和中间列表中的值有关,中间的列表可以使用花括号来表示指定范围,也可以使用一些命令来生成列表,但是需要加$(),要把前面的变量名和后面的循环体连接起来。例如:
[root@centos7 data]#touch f1,txt
[root@centos7 data]#touch f2.txt
[root@centos7 data]#touch f3.txt
[root@centos7 data]#for file in *.txt;do echo
filename is $file;done
filename is f2.txt
filename is f3.txt
其中的通配符来表示的话是不需要加双引号的。
但是如果要在脚本里面引用文件可以使用命令
cat filename,前提是命令需要反向单引号。例如:
#!/bin/bashfor USER in
` cat userlist.txt;do
useradd $USER
done
如果说数据量比较大的话可以实行并行运行,使用
{}括起来然后最后加
&,例如:
#!/bin/bash
NETID=172.16.128
for HOSTID in {1..245};do
{
if ping -c1 -w1 $NETID.$HOSTID &> /dev/null;then
echo $NETID.$HOSTID is up | tee -a hostlist.txt
fi
} &
done
wait
for也是可以套嵌的,例如:
#!/bin/bash
for i in {1..10};do
for j in {1..10};do
echo -e '*\c'
done
echo
done
关于for还可以使用
(( ))里面只要不是数字就认为是变量,例如:
#!/bin/bash
n=10
for ((sum=0,i=1;i<=n;i++));do
let sum+=i
done
echo sum=$sum
像
continue只是临时结束一次循环,并不影响大循环。例如:
#!/bin/bash
for ((i=0;i<10;i++));do
if [ $i -eq 5 ];then
continue
fi
echo i=$i
done
如果说确定终止循环可以使用
break,但是并不是退出脚本,只是退出循环而已,退出脚本可以使用
exit。例如:
#!/bin/bash
for ((i=0;i<10;i++));do
if [ $i -eq 5 ];then
break
fi
echo i=$i
done
这个例子就是打印到4,5以后就不再循环了,但是不会整个脚本的结束,以后的脚本还会继续运行。
shift可以接连执行,例如创建不同用户吧:
#!/bin/bash
while [ "$1" ];do
useradd $1
echo user:$1 is created
shift
done
echo finish
这个脚本如果执行的话,后面跟几个用户名都可以创建。
相关文章推荐
- Shell 编程进阶(四)
- Linux 基础命令(十)—— SHELL脚本编程进阶(一)
- shell编程之进阶篇四简单流程控制
- 进程管理和shell脚本编程进阶
- shell编程基础进阶
- shell编程之进阶篇三常见命令详解
- shell编程之进阶篇五函数
- shell脚本语言编程进阶实战
- SHELL脚本编程进阶(一)
- Shell 编程进阶笔记
- Shell 编程进阶(二)
- SHELL脚本编程进阶(二)
- SHELL脚本编程进阶(二)
- SHELL脚本编程进阶(一)
- Shell 编程进阶(一)
- shell编程之进阶篇一表达式
- shell编程之进阶篇二常见运算符号
- Shell编程入门进阶之bash配置文件介绍
- Shell 编程进阶(三)
- shell编程之正则表达式