1、設計一個shell腳本,在/userdata目錄下建立10個目錄,即user1~user50,并設置每個目錄的權限,其中其他用戶的權限為:讀;文件所有者的權限為:讀、寫、執行;文件所有者所在組的權限為:讀、執行
[root@node1 script]# cat mkuserdata.sh #!/bin/bash # author jin.ren # date 20170412 # version 3.0 # can mkdir /usrdata userfile if [ -d /usrdata ]; then for i in {1..10};do mkdir /userdata/user$i echo "mkdir user$i" chmod 754 /userdata/user$i done else for b in {1..10};do mkdir -p /userdata/user$b chmod 754 /userdata/user$b echo "mkdir user$b" done fi
2、用shell編程,判斷一文件是不是塊設備文件,如果是則將其拷貝到/dev目錄下
[root@node1 script]# cat checkblock.sh #!/bin/bash # Author jin.ren # version 3.0 # date 20170412 directory=/dev read -p "input the files absolute path " file1 for file in $file1 do if [ -b $file ] then cp -a $file $directory/ echo "cp block file $file is backup in $directory" fi done [root@node1 script]# checkblock.sh input the files absolute path /root/sr0 /root/sda5 /root/bbb cp block file /root/sr0 is backup in /dev cp block file /root/sda5 is backup in /dev
3、用shell腳本,批量建立用戶user1-user20的用戶和組class1并為用戶統一創建密碼為www.magedu.com,并指定屬組為class1
[root@node1 script]# cat useradd.sh #!/bin/bash #author jin.ren #version 3.0 #date 20170412 groupadd class1 for i in {1..20} do useradd user$i && echo "www.magedu.com" | passwd --stdin root &> /dev/null echo "add user user$i finished ... " usermod -g class1 user$i echo "user user$i add group class1" done
4、編寫shell程序,實現自動刪除20個賬號。賬號名為user1至user20,用while語法實現
[root@node1 script]# cat userdel.sh #!/bin/bash # Author jin.ren # Version 3.0 # date 20170412 a=1 while [ $a -le 20 ] do userdel -r user$a a=$[$a+1] done
5、寫一個shell,循環打印1-80的隨機數10次
[root@node1 script]# cat random.sh #!/bin/bash # Author jin.ren # Version 3.0 # Date 20170412 for i in {1..10}; do echo $[RANDOM%81] done
6、用find命令查找/data/backup 文件下面創建時間為7天前的,后綴為.html的文件刪除
[root@node1 script]# touch -m -t "201612051232.22" /data/backup/adfadf.html [root@node1 script]# ll /data/backup/adfadf.html -rw-r--r-- 1 root root 0 Dec 5 12:32 /data/backup/adfadf.py [root@node1 script]# find /data/backup/ -type f -mtime +7 -name "*html" | xargs rm [root@node1 script]# ls /data/backup/adfadf.html ls: cannot access /data/backup/adfadf.py: No such file or directory
7、新建一個html.sh腳本,可以建立以8位隨機字母開頭,且后綴名為.html的文件,可以與用戶交互接收參數,參數為多少時,可以新建多個這樣的隨機數文件。要求隨機字母必需為大字母。
[root@node1 test]# cat html.sh #!/bin/bash # Author jin.ren # Version 3.0 # Date 20170421 read -p "Please input the create the html number: " num [ -z $num ] && num=$num for I in `seq $num` do random=` cat /dev/urandom | tr -dc [:alpha:] | head -c${1-8}` touch $random\.html echo "create $random\.html" unset random done [root@node1 test]# sh html.sh Please input the create the html number: 5 create exCoThER\.html create BMgCylNn\.html create VKlpRWyy\.html create JNvdHWjM\.html create NFpfpinc\.html [root@node1 test]# ls BMgCylNn.html exCoThER.html html.sh JNvdHWjM.html NFpfpinc.html VKlpRWyy.html
8、寫一個腳本判斷今天是星期幾,并實現七天中每天完成不一樣的任務,假如今天是周四,
輸出今天是周四,而后執行一條 tty命令
[root@node1 script]# cat weekday.sh #!/bin/bash # Author jin.ren # Version 3.0 # Date 20170412 date1="Monday" date2="Tuesday" date3="Wednesday" date4="Thursday" date5="Friday" date6="Saturday" date7="Sunday" for week in `date +%A`;do if [ $week == $date1 ];then echo "This is $week" && ls -l elif [ $week == $date2 ];then echo "This is $week" && pwd elif [ $week == $date3 ];then echo "This is $week" && cal elif [ $week == $date4 ];then echo "This is $week" && tty elif [ $week == $date5 ]; then echo "This is $week" && id elif [ $week == $date6 ]; then echo "This is $week" && du -sh else echo "This is $week " && history -r fi done [root@node1 script]# weekday.sh This is Wednesday April 2017 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
9、生成指定個隨機數,并計算出指定個隨機數中的最大數,與最小數
[root@node1 test]# cat opertion.sh #!/bin/bash declare -i MAX=0 declare -i MIN=0 for i in `seq $1`;do MYRAND=$RANDOM [ $i -eq 1 ] && MIN=$MYRAND if [ $i -le $1 ] ; then echo -ne "n$MYRAND \t" else echo "$MYRAND" fi [ $MYRAND -gt $MAX ] && MAX=$MYRAND [ $MYRAND -lt $MIN ] && MIN=$MYRAND done echo "this number MAX=$MAX MIN=$MIN" [root@node1 test]# sh opertion.sh 10 n30202 n400 n11091 n30524 n5947 n12782 n9286n6977 n25802 n5945 this number MAX=30524 MIN=400
10、用until命令來實現,統計文件行數的腳本,并且實現與用戶交互,直到用戶輸入quit為止,退出程序,否則一直提示用戶輸入一個文件。
[root@node1 script]# cat wcfile.sh #!/bin/bash # Author: jin.ren # Version: 3.0 # Date 20170412 read -p "please input a file way name or quit : " file until [ $file == 'quit' ] ; do line=`cat $file | wc -l ` echo "The file have a $line line! " read -p "please input a file way name: " file done
11、如何將/root/script添加至環境變量中去
[root@node1 ~]# mkdir script [root@node1 ~]# cd script/ [root@node1 script]# cat <<EOF >> /script/test.sh > #!/bin/bash > echo "test PATH" > EOF [root@node1 script]# chmod +x test.sh [root@node1 script]# test 這個時候用補全是補不出test.sh這個可執行腳本來的 test testgdbm testlibraw testparm testrb [root@node1 script]# cat <<EOF >> /etc/profile.d/script.sh > export PATH=/root/script:$PATH > EOF [root@node1 script]# chmod +x /etc/profile.d/script.sh [root@node1 script]# . /etc/profile.d/script.sh [root@node1 ~]# test.sh test PATH 當把/root/script添加至環境變量中時,test.sh 是可以直接執行了
12、設計一個shell腳本,在/data目錄下創建10個目錄,即user1~user10,并設置每個目錄的權限,其中文件所有者的權限為可讀可寫可執行,文件屬組的權限為可讀可執行,其他用戶的權限為可讀。
#!/bin/bash # for i in {1..10};do echo "$i" mkdir -pv -m 754 "/data/user$i" done
13、設計一個shell腳本,接收一個整數N作為參數,實現批量創建用戶,用戶名格式為user1到userN,一共N個用戶。這些用戶的基本組統一為class23。并刪除之前創建的用戶。
#!/bin/bash # var_cnum=$1 var_dnum=$1 var_group=$2 groupadd $var_group while [ $var_cnum -gt 0 ];do # echo $var_a useradd user$var_cnum -g $var_group &> /dev/null let var_cnum-=1 done #delete users cat /etc/passwd | grep "^user" for i in $( seq 1 $var_dnum );do userdel -rf user$i done
14、設計一個shell腳本,該腳本可以接收一個1到5的整數作為參數,功能為創建文件,文件的名稱格式為8個隨機的大小英文字母,創建文件的個數等于輸入的整數參數值。
#!/bin/bash var_fnum=$1 var_content="A B C D E F G H I G K L M N O P Q R S T U V W X Y Z" for i in $( seq 1 $var_fnum );do var_n1=0 var_n2=0 var_n3=0 var_n4=0 var_n5=0 var_n6=0 var_n7=0 var_n8=0 for i in {1..8};do var_index=$[ $RANDOM % 26 + 1 ] var_alpha=`echo $var_content | cut -d " " -f $var_index` if [ $i -eq 1 ];then var_n1=$var_alpha fi if [ $i -eq 2 ];then var_n2=$var_alpha elif [ $i -eq 3 ];then var_n3=$var_alpha elif [ $i -eq 4 ];then var_n4=$var_alpha elif [ $i -eq 5 ];then var_n5=$var_alpha elif [ $i -eq 6 ];then var_n6=$var_alpha elif [ $i -eq 7 ];then var_n7=$var_alpha else var_n8=$var_alpha fi done echo "<h1>www.Magedu.com</h1>" > $var_n1$var_n2$var_n3$var_n4$var_n5$var_n6$var_n7$var_n8\.html done
15、編寫一個猜數字的游戲,要猜的數字為1到100百的整數。用戶執行程序后根據提示輸入一個數字,當輸入的數字等于要猜的數字時,提示猜數字成功,程序結束退出。若輸入的數字不等于要猜的數字,提示輸入的數字大于或者小于要猜的數字,然后提示用戶繼續輸入一個數字繼續猜,直到用戶猜中結果,程序猜結束退出。
#!/bin/bash var_Matrix=$[ $RANDOM % 100 + 1 ] echo $var_Matrix var_num=0 while [ ! $var_Matrix -eq $var_num ];do read -p "please input a number to guess the Matrix: " var_num if [ $var_Matrix -gt $var_num ];then echo "Your number is so smaller! try again!" else echo "Your number is so bigger! try again!" fi done echo "you win the game, The Matrix is $var_Matrix"
原創文章,作者:renjin,如若轉載,請注明出處:http://www.www58058.com/79317