shell练习题

方法一

array=(I am oldboy teacher welcome to oldboy training class)
for word in ${array[*]}
do
    if [ ${#word} -le 6 ]
    then
        echo $word
    fi
done
echo ===end
for((i=0;i<${#array[*]};i++))
do
    if [ ${#array[i]} -le 6 ]
    then
        echo ${array[i]}
    fi
done

方法二

#!/bin/bash
array=(I am oldboy teacher welcome to oldboy training class)
for i in ${array[*]}
do
    if [ ${#i} -le 6 ]
    then
        echo $i
    fi
done

方法三

#!/bin/bash
arr=(I am oldboy teacher welcome to oldboy training class)
for n in ${arr[*]}
do
    if [ ${#n} -le 6 ]
    then
        echo $n
    fi
done

方法四

number=(I am oldboy teacher welcome to oldboy training class)
for ((i=0;i<${#number[*]};i++))
do
    if [ "${#number[$i]}" -le 6 ];then
        echo ${number[$i]}
    fi
done

方法一

#!/bin/sh
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
arr=(
    http://www.baidu.com
    http://blog.etiantian.org
    http://oldboy.blog.51cto.com
    http://10.0.0.7
    )
usage(){
    if [[ ! $1 =~ http://.* ]]
    then
        echo "Usage:$0 http://www.xx.com"
        exit 1
    fi
}
check_url(){
    wget -q -o /dev/null --spider -T 15 --tries=2 $1 &>/dev/null
    retval=$?
    if [ $retval -eq 0 ]
    then
        action  "$1 is ok." /bin/true
    else
        action "$1 is no." /bin/false
    fi
}
piliang(){
    for url in ${arr[*]} 
    do
        usage $url
        check_url $url
    done
}
main(){
    while true
    do
        piliang
        echo ====================
        sleep 5
    done
}
main

方法二

#!/bin/bash
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
check=0
a=(
http://blog.oldboyedu.com
http://blog.etiantian.org
http://oldboy.blog.51cto.com
http://10.0.0.7
https://www.qq.com
http://www.baidu.com
)
jian(){
    for ((i=0;i<${#a[*]};i++))
    do
        wget -T 3 ${a[i]} &>/dev/null
        if [ $? -eq 0 ]
        then
            action "${a[i]} is ok."  /bin/true
        else
            action "${a[i]} is error."  /bin/false
        fi
    done
    ((check++))
}
main(){
    while true
    do
        jian
        echo "=================check count:${check}================="
        sleep 5
    done
}
main

方法三

#!/bin/bash
. /etc/init.d/functions
check_count=0
url_list=(
http://www.baidu.com
http://www.qq.com
http://oldboy.blog.51cto.com
http://10.0.0.7
)
int() {
    b=''
    for ((i=0;$i<=100;i+=2))                                                                         
    do
        printf "progress: [%-50s] %d%%\r" $b $i
        sleep 0.1
        b+='#'
    done
    echo     
}
count_down() {
    echo -n "请等待......"
    sleep 1
    int
}
check_url() {
    count_down
    for ((i=0;i<`echo ${#url_list[*]}`;i++))
    do
        curl ${url_list[$i]} &>/dev/null
        if [ $? -eq 0 ]
        then
            action "${url_list[$i]} is OK" /bin/true
        else
            action "${url_list[$i]} is NO" /bin/false
        fi
    done
    ((check_count++))
}
main() {
    while true
    do
        check_url
        echo "等待在次测试......"
        sleep 5
    done
}
main

方法四(精简版)

#!/bin/sh
arr=(
    http://www.baidu.com
    http://blog.etiantian.org
    http://oldboy.blog.51cto.com
    http://10.0.0.7
    )
while true
do
    for url in ${arr[*]} 
    do
        wget -q -o /dev/null --spider -T 15 --tries=2 $url &>/dev/null
        retval=$?
        if [ $retval -eq 0 ]
        then
            echo  "$url is ok." 
        else
            echo  "$url is no."
        fi
    done
    sleep 5
done

文件重命名问题案例
方法一

for file1 in `ls *.html`
do
    mv $file1 `echo $file1|awk -F "[_.]" '{print "oldgirl_"$2".HTML"}'`
done

方法二

Path=/oldboy
[ -d $Path ] || mkdir $Path
for n in {1..10}
do
    random=`openssl rand -base64 40|sed 's#[^a-z]##g'|cut -c 2-11`
    touch $Path/oldboy_${random}.html                                                                                                 
done

方法三

#!/bin/sh
Dirname="/oldboy"
cd $Dirname||exit 1
for OldFileName in `ls`
do                                                                                                                                    
    NewFileName=$(echo $OldFileName|awk -F [_.] '{print "oldgirl_"$2".HTML"}')
    mv $OldFileName ${NewFileName}
done

url监控案例
方法一

#!/bin/sh
arr=(
http://www.baidu.com
http://blog.etiantian.org
http://oldboy.blog.51cto.com
http://10.0.0.7
)
while true
do
    for url in ${arr[*]}
    do
        wget -q -o /dev/null --spider -T 15 --tries=2 $url &>/dev/null
        retval=$?
        if [ $retval -eq 0 ]
        then
            echo  "$url is ok." 
        else
            echo  "$url is no."
        fi
    done
    sleep 5
done

方法二

#!/bin/sh
[ -f /etc/init.d/functions ] && . /etc/init.d/functions

arr=(
http://www.baidu.com
http://blog.etiantian.org
http://oldboy.blog.51cto.com
http://10.0.0.7
)

usage(){
    if [[ ! $1 =~ http://.* ]]
    then
        echo "Usage:$0 http://www.xx.com"
        exit 1
    fi
}

check_url(){
    wget -q -o /dev/null --spider -T 15 --tries=2 $1 &>/dev/null
    retval=$?
    if [ $retval -eq 0 ]
    then
        action  "$1 is ok." /bin/true
    else
        action "$1 is no." /bin/false
    fi
}

piliang(){
    for url in ${arr[*]} 
    do
        usage $url
        check_url $url
    done
}

main(){
    while true
    do
        piliang
        echo ====================
        sleep 5
    done
}
main

加密与解密

#!/bin/sh
array=(                                           #<==把待比较的字符串信息放到数组里。
21029299
00205d1c
a3da1677
1f6d12dd
890684b
)
Path=/tmp/md5.txt
funGetMd5() {
    > $Path
    for ((Num=0;Num<=32767;Num++))
    do     
        {
            Stat=$(echo $Num|md5sum)
            echo "$Stat $Num" >> $Path           #<==建立数字和md5sum后的内容对应关系。
        }&

    done
}
funFindMd5() {
    word=$(echo "${array[@]}"|sed -r 's# |\n#|#g')  #<==取出所有数组元素并用|分隔开。
    grep --color=auto -E "$word" $Path              #<==同时过滤包含所有不同字符串的内容。
}
funcMain(){
    funGetMd5
    funFindMd5
}
funcMain

求和案例

a=`awk '{print $10}' /root/access_2013_05_30.log` >/tmp/num.txt
sum=0
for n in $a
do
    if [ $n == "-" ]
    then
        continue                                                                                                                      
    fi
    let sum=sum+n
done
echo $sum

批量创建用户案例
方法一

user="oldboy"
passfile="/tmp/user.log"
for num in `seq -w 10`
do
    useradd $user$num
    pass="`echo "test$RANDOM"|md5sum|cut -c3-11`"
    echo "$pass"|passwd --stdin $user$num
    echo -e "user:$user$num\tpasswd:$pass">>$passfile
done
echo ------------this is zwb trainning class contents-------------
cat $passfile

方法二

. /etc/init.d/functions
user="oldboy"
passfile="/tmp/user.log"
for num in `seq -w 11 15`
do
    pass="`echo "test$RANDOM"|md5sum|cut -c3-11`"
    useradd $user$num &>/dev/null &&\
    echo "$pass"|passwd --stdin $user$num &>/dev/null &&\
    echo -e "user:$user$num\tpasswd:$pass">>$passfile
    if [ $? -eq 0 ]
    then
        action "$user$num is ok" /bin/true
    else
        action "$user$num is fail" /bin/false
    fi
done
echo ---------------------------------
cat $passfile && >$passfile

方法三

. /etc/init.d/functions
user="xiaoting"
passfile="/tmp/user.log"
for num in `seq -w 10`
do
    pass="`echo "test$RANDOM"|md5sum|cut -c3-11`"
    useradd $user$sum &>/dev/null &&\
    echo -e "$user${num}:$pass">>$passfile
    if [ $? -eq 0 ]
    then
        action "$user$sum is ok" /bin/true
    else
        action "$user$sum is fail" /bin/false
    fi
done
echo ------------------------------------------------
chpasswd < $passfile
cat $passfile && >$passfile

方法四

#将$()括号里面的内容传递给变量user
for user in $(echo oldboy{01..10}|xargs -n1)
do
    #将密码传递给变量pass                                                                                                             
    pass=$(echo $RANDOM|md5sum|cut -c 1-8)
    #创建用户
    useradd $user
    #给用户修改密码
    echo "$pass"|passwd --stdin $user
    #把创建的用户及密码追加重定向到文件里面
    echo "$user:$pass" >> /tmp/user.txt
done

密码md5加密

for n in {0..32767}
do
    echo -n "$n "  >>/tmp/md5sum.txt                                                                                                  
    echo $n|md5sum >>/tmp/md5sum.txt
done
grep "4fe8bf20ed" /tmp/md5sum.txt

文件改名案例
方法一

Path=/oldboy
[ -d $Path ] || mkdir $Path
cd $Path
a=`ls *.html|wc -l` >/dev/null
for file in `ls`                                                                                                                      
do
    if [ $a -ne 0 ]
    then
      echo `ls *.html|awk -F '_' '{print "mv",$0,$1"_oldgirl.HTML"}'|bash` >/dev/null
    else
      echo `ls *.HTML|awk -F '_' '{print "mv",$0,$1"_oldboy.html"}'|bash` >/dev/null
 fi
done

方法二

[ d /oldboy ] && rm -rf /oldboy
[ d /oldboy ] || mkdir /oldboy
cd /oldboy
for n in `seq 10`
do
    name=`openssl rand -base64 40|sed 's#[^a-z]##g'|cut -c 2-11`
    touch ${name}_oldboy.html
done

密码破解

for n in {0..32767}
do
    echo "`echo $n|md5sum` $n" >>/tmp/zhiwen.log 
done
>/tmp/zhiwen.log
for n in {0..32767}
do
    echo "`echo $n|md5sum` $n" >>/tmp/zhiwen.log
done
md5char="4fe8bf20ed"                                                                                                                  
while read line
do
if [ `echo $line|grep "$md5char"|wc -l` -eq 1 ]
then
    echo $line
    break
fi
done </tmp/zhiwen.log
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容