習題1:打印99乘法表
#!/bin/bash # for ((j=1;j<=9;j++)) do for ((i=1;i<=j;i++)) do echo -e -n "${i}x${j}=$[${i}*${j}]\t" done echo done
習題2:寫一個腳本
(1)創建目錄/tmp/dir-當前日期時間;例如/tmp/dir-20150707-155503。
(2)在此目錄中創建10個空文件,分別為file1-file10;
#!/bin/bash basedir=/tmp/dir-`date +%Y%m%d-%H%M%S` mkdir -p $basedir for d in {1..10} do touch $basedir/file$d done
習題3:寫一個腳本
(1)創建用戶tuser1-tuser9;
(2)創建目錄/tmp/dir-當前日期;
(3)在/tmp/dir-當前日期 目錄中創建9個空文件file101-file109
(4)將file101的屬主改為tuser1,依次類推,一直將file109的屬主改為tuser9;
#!/bin/bash basedir=/tmp/dir-`date +%Y%m%d` mkdir -p $basedir for d in {1..9} ;do filename=$basedir/file10$d touch $filename useradd tuser$d chown tuser$d $filename done
習題4:寫一個腳本,完成以下任務。
(1)添加5個用戶,user1-user5,每個用戶的密碼同用戶名
(2)添加密碼完成后不顯示passwd執行結果
(3)顯示添加成功信息
#!/bin/bash for i in `seq 5` do username=user${i} useradd $username echo $username | passwd --stdin $username &> /dev/null echo "$username created successfully" done
習題5:寫一個腳本
(1)腳本可以接受一個以上的文件路徑作為參數;
(2)顯示每個文件所擁的行數;
#!/bin/bash for file in $* do lines=`wc -l $file | cut -d' ' -f1` echo "$file has $lines lines." done
習題6:寫一個腳本,不使用awk
顯示/etc/passwd文件中位于文件的第偶數行的用戶名;并顯示共有多少個這樣的用戶
#!/bin/bash totalUsers=`wc -l /etc/passwd | cut -d' ' -f1` for i in `seq 2 2 $totalUsers`; do userName=`head -n $i /etc/passwd | tail -1 | cut -d: -f1` echo $userName echo $userName >> /tmp/count.tmp done echo "Total users: `wc -l /tmp/count.tmp | cut -d' ' -f1` ."
習題7:指定一個用戶名,判斷此用戶的用戶名和它的基本組的組名是否相同
#!/bin/bash if [ $# -ne 1 ] ;then echo "agrs error" exit 3 fi if ! id $1 &>/dev/null ;then echo "$1 Not Exsits" exit 4 fi username=$1 groupname=`id $username -gn` if [ "$username" == "$groupname" ] then echo "Same." else echo "Not same." fi
習題8:判斷當前主機的CPU生產商,(其信息保存在/proc/cpuinfo文件中)
如果是:AuthemticAMD,就顯示其為AMD公司
如果是:GenuineIntel,就顯示其為 Intel公司
否則,就顯示其為其他公司。
#!/bin/bash CPU=`egrep "^vendor_id" /proc/cpuinfo | tail -1 | cut -d: -f2` if [ $CPU == 'GenuineIntel' ] ;then echo "Intel" elif [ $CPU == 'AuthemticAMD' ] ;then echo "AMD" else echo "Other" fi
習題9:給定三個用戶名,將這些用戶的帳號信息提取出來,然后放入/tmp/test.txt文件中,并在行首給定行號。
#!/bin/bash if [ $# -ne 3 ] ;then echo "agrs error" exit 3 fi i=0 for user in $* do let i++ echo -e "$i\t`grep "^$user:" /etc/passwd`" >> /tmp/test.txt done
習題10:依次向/etc/passwd中的每個用戶問好:hello 用戶名,并顯示用戶的shell
例如:Hello ,root ,your shell :/bin/bash。
#!/bin/bash # awk -F':' '{print "hello,",$1," your shell :",$7}' /etc/passwd
習題11:計算100以內所有能被3整除的整數的和
#!/bin/bash # SUM=0 for i in `seq 3 3 100` do let SUM+=$i done echo "sum: $SUM"
習題12:查詢當前192.168.1.x網段內,那些IP被使用了,輸出這些IP到一個文件中。
#!/bin/bash # for i in {1..254} do IP=192.168.1.$i if ping -w 1 -q $IP ;then echo $IP >> /tmp/ips.txt fi done
原創文章,作者:XIAJIDONG,如若轉載,請注明出處:http://www.www58058.com/76714