| 知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
#!/bin/bash
for i in 1 2 3 4 5
do
echo "Welcome $i times"
done
for i in $( ls ); do
echo item: $i
done
for i in `seq 1 10`;
do
echo $i
done
for i in {1..5}
do
echo "Welcome $i times"
done
for (( c=1; c<=5; c++ ))
do
echo "Welcome $c times..."
done
for ((i=1; $i<=9;i++)); do echo $i; done
for i in {0..10..2}
do
echo "Welcome $i times"
done
for i in $(seq 1 2 20)
do
echo "Welcome $i times"
done
單行實例
for ip in {1..10};do echo $ip; done
for i in `seq 1 10`;do echo $i;done
for ip in {81..92}; do ssh root@172.16.3.$ip date; done
for n in {23..32} {49,50} {81..92}; do mkdir /tmp/$n; echo $n; done
for keyword in bash cmd ls
do
echo $keyword
done
string="aaa bbb ccc ddd" && for word in $string; do echo "$word"; done
files=( "/etc/passwd" "/etc/group" "/etc/hosts" )
for file in "${files[@]}"
do
echo $file
done
infinite loops
#!/bin/bash for (( ; ; )) do echo "infinite loops [ hit CTRL+C to stop]" done
find file
#!/bin/bash
for file in /etc/*
do
if [ "${file}" == "/etc/resolv.conf" ]
then
countNameservers=$(grep -c nameserver /etc/resolv.conf)
echo "Total ${countNameservers} nameservers defined in ${file}"
break
fi
done
backup file
#!/bin/bash
FILES="$@"
for f in $FILES
do
# if .bak backup file exists, read next file
if [ -f ${f}.bak ]
then
echo "Skiping $f file..."
continue # read next file and skip cp command
fi
# we are hear means no backup file exists, just use cp command to copy file
/bin/cp $f $f.bak
done
for n in {23..32} {49,50} {81..92}; do mkdir /tmp/$n; echo $n; done
#!/bin/bash
COUNTER=0
while [ $COUNTER -lt 10 ]; do
echo The counter is $COUNTER
let COUNTER=COUNTER+1
done
while read name age do echo $name $age done << EOF neo 30 jam 31 john 29 EOF while read name age do [[ $age -gt 30 ]] && echo $name done << EOF neo 30 jam 31 john 29 EOF
$ cat mount.sh
#!/bin/sh
while read LINE
do
s=`echo $LINE|awk '{print $1}'`
d=`echo $LINE|awk '{print $2}'`
umount -f $d
mount -t nfs4 $s $d
done < mount.conf
$ cat mount.conf
172.16.0.1:/ /www/logs/1
172.16.0.2:/ /www/logs/2
172.16.0.3:/ /www/logs/3
172.16.0.4:/ /www/logs/4
172.16.0.5:/ /www/logs/5
讀一行
while IFS='' read -r line || [[ -n "$line" ]]; do echo "Text read from file: $line" done < "$1"