shell 循环语句与判断语句函数

if 语句
if then elif fi
if then else fi

#!/bin/bash
read -p "请输入两个数" n1 n2
expr $n1 + $n2 + 1
n3=0
if [[ $? == 0 ]]
then
  echo "input ok"
  expr n3=$(($n1+$n2))
else
  echo "input error"
fi
if [ $n1 -gt $n2 ]
#if test $n1 -gt $n2
then
  echo "第一个数大"
else
  echo "第二个数大"
fi
echo $n3

for 循环

read -p "please in put a num" num
sum=0
for((i=1;i<=$num;i+=1))
do
sum=$(($sum+$i))
done
echo $sum 

sum1=0
for i in `seq 1 100`
do
sum1=$(($i+$sum1))
done
echo $sum1
           
批量創建用戶
for n in `seq 10`
do
useradd olddog$n
pass=openssl rand -base64 10
echo -e "olddog$n:\t $pass" >>/etc/passwd.txt
echo $pass|passwd --stdin
done 


for n in `seq 11 15`
do
	id olddog$n
	if [ $? -ne 0 ]
	then
		useradd olddog$n
		pass=openssl rand -base64 10
		echo -e "olddog$n:\t $pass" >>/etc/Passwd.txt
	fi
done
	chapasswd<Passwd.txt
批量查詢ip段是否通10.0.0.0/24
for n in {1..254}
do
	if `ping -c 2 -w 3 10.0.0.$n &>>/dev/null`
	then
		echo "10.0.0.$n is up"
	else
	   echo "10.0.0.$n is down"
	fi
done

case语句

read -p "请输入选项" l
case $l in
   1)
   echo 1
   ;;
   2)
        echo 2
       ;;
   *)
    echo "hha"
    ;;
esac

while 循环

read -p "请输入一个数字" line
while [ $line -gt 0 ]
do
line=$(($line-1))
echo $line
done

awk 数组

#!/bin/bash
awk '{S[$1]++}END{for(key in S) print key,S[key]}' < 1.log
[root@localhost logs]# sh 3.sh
192.168.1.10 5
192.168.1.11 1
[root@localhost logs]# cat 1.log 
192.168.1.10
192.168.1.10
192.168.1.10
192.168.1.10
192.168.1.10
192.168.1.11
${olddog}${#olddog}${olddog:offset:length}、${olddog#word}、${olddog##word}、${olddog%word}、${olddog%%word}、${olddog/pattern/string}、${olddog//pattern/string}、${olddog:-word}
${olddog} 取值
${#olddog} 求长度
${olddog:offset:length} 取length+1之后的字符串
${olddog#word} 从头开始删除第一个worl
${olddog##word}从头开始删除所有word
${olddog%word}从末尾删除第一个world
${olddog%%word} 从末尾开始删除所有word
${olddog/pattern/string} 替换匹配的字符串
${olddog:-word} olddog为空时word赋值给最左边接收的变量
随机密码
l长度 s 特殊字符 C 大写字符  c小写字符 -d 数字
mkpasswd -l 10 -d 6 -c 6 -C 3 -s 2
openssl rand -base64 10
date +%s%N
截取10个数字 cut -c 1-10
[root@localhost logs]# date +%s%N|cut -c 1-10
1602077263

sort排序 r反向排序 n对数字排序
[root@localhost logs]# cat 1.txt|sort -rn
34
23
3
1
[root@localhost logs]# cat 1.txt|sort -n
1
3
23
34

函数:

function name {
 echo "hahah"

}
name   

创建随机数字替换为字母的10个文件

path=/olddog
[ -d $path ] || mkdir $path
for n in {1..10}
do
  random=`echo "OLDDOG$RANDOM"|md5sum|tr "0-9" "m-z"|cut -c 2-11`
  touch $path/${random}_olddog.html
done
文件批量改名file=aasdqwe_olddog.html
echo ${file/olddog.html/oldmaledog.HTML/}

for file in `ls /olddog/*.html`
do 
mv file `echo ${file/olddog.html/oldmaledog.HTML/}`
done

ls /oldboy/*.HTML|awk -F "oldgirl.HTML" '{print "mv",$0,$1"olddog.html"}'|bash

检测网络是否正常

. /etc/init.d/functions
URL=(
https://www.baidu.com
https://luffycity.com
)
CheckUrl(){
	wget --spider  -t 2 -T 5 -o /dev/null -q $1
	if [ $? -eq 0 ] 
	then
	echo "is ok"
	fi
}

DearUrl(){
	for url in ${URL[*]}
	do
		CheckUrl $url
	done
}
main(){
	while true
	do 
	   DearUrl
	   sleep2
	done

}

awk '{$S[$1]++}END{for (key in S) print S[key],key}' access.log|sort -rn>/tmp/ip.log
while read line
do
ip=`echo $line|awk '{print $2}'`
count=`echo $line|awk '{print $1}'`
if [ $count -gt 35 -a `grep "$ip" /tmp/drop.log|wc -l` -lt 1]
then
    iptables -IINPUT -s $ip -j DROP &&\
	echo "$ip" >>/tmp/drop.log
else
	echo "$ip">>/tmp/accept.log
done</tmp/1.log
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Ubuntu系统中,shell脚本循环语句的写法可以采用while循环来实现。具体的语法如下所示: ```shell #!/bin/bash while [ condition ] do # 循环体 done ``` 在这个语法中,你需要将`condition`替换为一个条件表达式,只有当条件表达式为真时,循环体中的代码才会被执行。你可以在循环体内部编写需要重复执行的代码。当条件表达式为假时,循环会终止。 例如,如果你想要实现一个简单的循环,直到用户输入"close"为止,可以使用以下的代码: ```shell #!/bin/bash value="" while [ "$value" != "close" ] do read -p "请输入字符串:" value done echo "停止循环!" ``` 这个脚本会不断要求用户输入字符串,直到输入的字符串为"close"为止。一旦输入的字符串为"close",脚本会输出"停止循环!"。注意,`read`命令用于读取用户的输入,并将其赋值给`value`变量。 希望这个答案能满足你的需求,如果你还有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Linux(ubuntu)shell脚本条件判断函数和循环(入门必看)](https://blog.csdn.net/weixin_68773927/article/details/126780831)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值