admin管理员组文章数量:1794759
shell
for 循环语句
for var in [ 取值列表 ]
do echo $var
done例:
for i in 1 2 3 4 5
for j in {1..100}
# ls -l /etc/|wc -l
# 转义字符
for var in file1 file\'2 I\'s # 三次,斜杠用来转义
# 从变量中取值
list="file1 file2 file3"
for i in $list
# 从命令中取值
for i in 'cat /etc/hosts'
do
# for 循环可以自定义shell分隔符,默认以空格作为分隔。IFS来自定义
1. 冒号 IFS=:
2. 冒号,封号,双引号 IFS=:;"
3. 换行符 IFS=$'\n'#!/usr/bin/bash
IFS=$'\n'
for i in `cat /etc/hosts`
do # echo $iecho $i|grep "root" # 输出包含root的
done
# 变量的自增和自减 C写法
for ((i=0;i<10;i++))
docommands
done
for (( a=1,b=9;a<10;a++,b--))
doecho num is $a $b
done
# 批量创建用户
#!/user/bin/bash
for i in $( cat user.txt )
douser=$( echo $i|awk -F : '{print $1}' )pass=$( echo $i|awk -F : '{print $2}' )echo $user 密码是 $pass id $user &>/dev/nullif [ $? -eq 0 ];thenecho " alreade exists "elseuseradd $userecho "$pass"|passwd --stdin $userfi
done
# 批量创建用户,用户输入数量和前缀, bax,10 表示从1到10
1. 批量 循环
2. 用户输入
#!/usr/bin/bashread -p " please enter 前缀:" pre
read -p "please enter number: " numfor i in $(seq $num)
do user=$pre$iid $user &>/dev/nullif [ $? -eq 0 ];thenecho "already exist"elseadduser $user ccccecho " add successfully"fi
done
批量创建用户,输入前缀(不能为空),输入用户数量(必须是整数) ,该脚本只能root 用户执行
# 只能root 用户运行该脚本
if [ ! $UID -eq 0 -o $user == "root" ];thenecho " 没有执行权限"exit
fi
read -p "前缀:" qz
read -p "用户数量" num
# 判断前缀不能为空,数量必须为整数
if [ -z $qz ];thenecho " 不能为空"exit
fi
if [[ ! $num=~[0-9]+$ ]];thenecho "请输入整数"exit
fi
for i in $(seq $num)
douser=$qz$iid $user &>/dev/nullif [ $? -eq 0 ];thenecho "already exists"elseuseradd $userecho "create successfully"fi
done
# 密码写入到特定的文件中
echo "$pass" | passwd --stdin $user &>/dev/null
# 随机密码
$((RANDOM))|md5sum|cut 2-8
echo "用户:$user 密码: $pass" >> /tmp/user.log
# 删除用户命令
userdel -r $user
批量探测主机存活状态 172.16.1.{1..254}
1.需要使用循环,254次
2. ping命令探测主机#!/usr/bin/bash
for i in {1..254}
do# 并发效果{ping -c 1 -W 1 172.16.1.$i &>/dev/nullrs=$?echo $rsif [ $rs -eq 0 ];thenecho "172.16.1.$i is ok" >> /tmp/ip.logelseecho "172.16.1.$i ping不通" fi} &
done# wait等上面的全部结束以后,在输出下面这一行waitecho "ip is down"# 注意并发的使用!!!# 开始测试端口 nmap ip|grep "22"
echo 'test ssh post...'
IFS=$'\n'
for i in $(cat /tmp/ip.log)
doip=$(echo $i|awk '{print $1}'nmap $ip|grep "22" &>/dev/nullif [ $? -eq 0 ];thenecho "$ip 22 is ok" >> /tem/port.logfi
done
编写点名脚本
1. 名单文件
#!/usr/bin/bashnumber=$(wc -l student.txt|awk '{print $1}')
for i in $(cat student.txt)
donum=$((RANDOM % $number))
donestudent=$(sed -n "${num}p" student.txt)echo $student
随机产生一个100以内的数字,用户输入数字做对比,提示用户大了或小了,然后猜对退出
统计猜错的次数
#!/usr/bin/bashsj=$((RANDOM % 100 +1))i = 1
while true
doread -p "请输入一个数字:" numif [ ! $num=~^[0-9]+$ ];thenecho " 请输入整数"continue
fiif [ $num -ge $sj ];thenecho "大了"
elif [ $num -le $sj ];thenecho "小了"
elseecho "ok~~!"break
fi
let i++
done
echo "失败了$i 次"
# 命令总结
# 查看执行过程
sh -x version.sh
# -n1 以列的方式显示、
echo tt{1..10}|xargs -n1
# 写入文件中
echo tt{1..10}|xargs -n1 > user.txt
转载于:.html
本文标签: shell
版权声明:本文标题:shell 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1693245178a251241.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论