Shell示例

1+2+..+100求和

+--------------+
|   for循环    |
+--------------+
sum=0
for((i=1;i<=100;i++))
do
sum=$((i+$sum))
done
echo $sum

+--------------+
|   while循环  |
+--------------+
sum=0
i=1
while ((i<=100))
do
((sum+=i))
((i++))
done
echo $sum
 
+--------------+
|   数学公式    |
+--------------+
i=100
echo $((sum=i*(i+1)/2))

+--------------+
|     awk      |
+--------------+
seq 100 | awk '{i+=$1}END{print i}'

批量生成8位随机数文件

for((i=1;i<=10;i++))
do
  touch `echo $RANDOM | md5sum | cut -c 1-8`.txt
done

批量修改文件名

ll
-rw-r--r-- 1 root root  0 Jul 31 06:57 01508427.txt
-rw-r--r-- 1 root root  0 Jul 31 06:57 177ad50a.txt
-rw-r--r-- 1 root root  0 Jul 31 06:57 764f1747.txt
-rw-r--r-- 1 root root  0 Jul 31 06:57 79205720.txt
-rw-r--r-- 1 root root  0 Jul 31 06:57 8d54c065.txt
-rw-r--r-- 1 root root  0 Jul 31 06:57 97026f8e.txt

+--------------+
|     sed      |
+--------------+
for i in `ls *.txt`
do
  mv $i `echo $i | sed "s@txt@sh@g"`
done

+--------------+
|     awk      |
+--------------+
for i in `ls *.txt`
do
awk -F. '{print "mv "$0,$1".sh"}'
done

+--------------+
|   rename     |
+--------------+
for i in `ls *.txt`
do
  rename ".txt" ".sh" $i;
done

关闭服务开机自启

chkconfig --list | grep 3:on | awk '{print $1}' | \
egrep -v "rsyslog | sshd | sysstst" | sed -r 's@(.*)@chkconfig \1 off@g' | bash

批量生成用户并设置随机数密码

for i in `seq 10`
do
  RAND=`openssl rand -hex 10`
  useradd test$i && \
  echo $RAND | passwd --stdin test$i && \
  echo -e "user: test$i \t passwd: $RAND" >> /tmp/user.log
done

判断网段IP在线情况

for i in `seq 254`
do
  ping -c2 172.16.100.$i &> /dev/null
  [ $? -eq 0 ] && echo "172.16.100.$i is up" >> /tmp/ip_up.log \
  || echo "172.16.100.$i is down" >> /tmp/ip_down.log
done

利用数组输出IP

array=(
  10.0.0.1
  10.0.0.2
  10.0.0.3
  10.0.0.4
)
for ip in ${array[*]}
do 
  echo $ip
done

-----------

for ((i=0;i<${#array[@]};i++))
do 
  echo ${array[i]}
done 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell脚本高级编程教程,希望对你有所帮助。 Example 10-23. Using continue N in an actual task: 1 # Albert Reiner gives an example of how to use "continue N": 2 # --------------------------------------------------------- 3 4 # Suppose I have a large number of jobs that need to be run, with 5 #+ any data that is to be treated in files of a given name pattern in a 6 #+ directory. There are several machines that access this directory, and 7 #+ I want to distribute the work over these different boxen. Then I 8 #+ usually nohup something like the following on every box: 9 10 while true 11 do 12 for n in .iso.* 13 do 14 [ "$n" = ".iso.opts" ] && continue 15 beta=${n#.iso.} 16 [ -r .Iso.$beta ] && continue 17 [ -r .lock.$beta ] && sleep 10 && continue 18 lockfile -r0 .lock.$beta || continue 19 echo -n "$beta: " `date` 20 run-isotherm $beta 21 date 22 ls -alF .Iso.$beta 23 [ -r .Iso.$beta ] && rm -f .lock.$beta 24 continue 2 25 done 26 break 27 done 28 29 # The details, in particular the sleep N, are particular to my 30 #+ application, but the general pattern is: 31 32 while true 33 do 34 for job in {pattern} 35 do 36 {job already done or running} && continue 37 {mark job as running, do job, mark job as done} 38 continue 2 39 done 40 break # Or something like `sleep 600' to avoid termination. 41 done 42 43 # This way the script will stop only when there are no more jobs to do 44 #+ (including jobs that were added during runtime). Through the use 45 #+ of appropriate lockfiles it can be run on several machines 46 #+ concurrently without duplication of calculations [which run a couple 47 #+ of hours in my case, so I really want to avoid this]. Also, as search 48 #+ always starts again from the beginning, one can encode priorities in 49 #+ the file names. Of course, one could also do this without `continue 2', 50 #+ but then one would have to actually check whether or not some job 51 #+ was done (so that we should immediately look for the next job) or not 52 #+ (in which case we terminate or sleep for a long time before checking 53 #+ for a new job).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值