shell習題100(十五)

2021-09-30 17:57:53 字數 3280 閱讀 3434

題目要求

判斷所給目錄內哪些二級目錄下有沒有text.txt檔案。

有text.txt檔案的二級目錄,計算出該test.txt檔案裡面所給出單詞的次數。

假如指令碼名字為1.sh, 執行指令碼的格式為 ./1.sh 123 root,其中123為目錄名字,而root為要計算數量的單詞。

參***

#!/bin/bash

#這個指令碼用來判斷檔案是否存在並計算單詞個數

#日期:2018-12-11

if [ $# -ne 2 ]

then

echo "請提供兩個引數,第乙個引數是目錄名字,第二個引數是單詞"

exit

ficd $1

for f in `ls .`

do if [ -d $f ]

then

if [ -f $f/test.txt ]

then

n=`grep -cw "$2" $f/test.txt`

echo "$1/$f目錄下面有test.txt, 該test.txt裡面的有$n個$2."

fi fi

done

題目要求

互動式指令碼,根據提示,需要使用者輸入乙個數字作為引數,最終列印出乙個正方形。在這裡我提供乙個linux下面的特殊字元■,可以直接列印出來。

示例: 如果使用者輸入數字為5,則最終顯示的效果為

■ ■ ■ ■ ■

■ ■ ■ ■ ■

■ ■ ■ ■ ■

■ ■ ■ ■ ■

■ ■ ■ ■ ■

參***
#!/bin/bash

#這個指令碼用來列印正方形

#日期:2018-12-11

while :

do read -p "please input a nuber: " n

n1=`echo $n|sed 's/[0-9]//g'`

if [ -n "$n1" ]

then

echo "$n is not a nuber."

continue

else

break

fidone

for i in `seq 1 $n`

do for j in `seq 1 $n`

doecho -n "■ "

done

echo

done

題目要求

寫乙個指令碼,依次向/etc/passwd中的每個使用者問好,並且說出對方的id是什麼,如:

hello, root,your uid is 0.

參***

#!/bin/bash

#這個指令碼用來問候使用者

#日期:2018-12-11

cat /etc/passwd |while read line

do username=`echo $line|awk -f ':' ''`

uid=`echo $line|awk -f ':' ''`

echo "hello, $username, your uid is $uid."

done

題目要求

linux系統 /home目錄下有乙個檔案test.xml,內容如下:

zzz

aaa ***

yyy

請寫出shell指令碼刪除檔案中的注釋部分內容,獲取檔案中所有artifactitem的內容,並用如下格式逐行輸出:

artifactitem:groupid:artifactid:aaa

參***

#!/bin/bash

#這個指令碼用來格式化xml檔案

#日期:2018-12-11

sed '//d' test.xml > test2.xml

egrep -n '' test2.xml |awk -f ':' '' > /tmp/line_number1.txt

n=`wc -l /tmp/line_number1.txt|awk ''`

n1=$[$n/2]

for i in `seq 1 $n1`

do j=$[$i*2]

k=$[$j-1]

x=`sed -n "$k"p /tmp/line_number1.txt`

y=`sed -n "$j"p /tmp/line_number1.txt`

sed -i "$x,$y"d test2.xml

done

grep -n 'artifactitem>' test2.xml |awk '' |sed 's/://' > /tmp/line_number2.txt

n2=`wc -l /tmp/line_number2.txt|awk ''`

get_value()'|awk -f '>' '' > /tmp/value.txt

cat /tmp/value.txt|while read line

dox=`echo $line|awk ''`

y=`echo $line|awk ''`

echo artifactitem:$x:$y

done

}n3=$[$n2/2]

for j in `seq 1 $n3`

do m1=$[$j*2-1]

m2=$[$j*2]

nu1=`sed -n "$m1"p /tmp/line_number2.txt`

nu2=`sed -n "$m2"p /tmp/line_number2.txt`

nu3=$[$nu1+1]

nu4=$[$nu2-1]

get_value $nu3 $nu4

done

題目要求

請撰寫乙個shell函式,函式名為 f_judge,實現以下功能

當/home/log目錄存在時將/home目錄下所有tmp開頭的檔案或目錄移到/home/log目錄。

當/home/log目錄不存在時,建立該目錄,然後退出。

參***

#!/bin/bash

#這個指令碼用來寫乙個小函式

#日期:2018-12-11

f_judge()

/home/log/

find /home -name "tmp*" -exec mv {} /home/log/ \;

else

mkdir /home/log

exit

fi}f_judge

shell指令碼100例

1 判斷檔案或目錄是否存在 bin bash if eq 0 then echo 未輸入任何引數,請輸入引數 echo 用法 0 檔名 目錄名 fiif f 1 then echo 該檔案,存在 ls l 1 else echo 沒有該檔案 fiif d 1 then echo 該目錄,存在 ls ...

shell指令碼100例

15 編寫指令碼,顯示進度條 bin bash jindu jindu cp a 1 2 killall 0 echo 拷貝完成 16 進度條,動態時針版本 定義乙個顯示進度的函式,螢幕快速顯示 bin bash rotate line rotate line 21 使用 expect 工具自動互動...

shell指令碼100例

31 使用指令碼迴圈建立三位數字的文字檔案 111 999 的檔案 bin bash for i in dofor j in dofor k in dotouch tmp i iij k.txt done done done 32 統計 etc passwd 中 root 出現的次數 bin bas...