Linux shell程式設計作業

2021-10-10 03:35:05 字數 1900 閱讀 9632

編寫指令碼exe1,該指令碼接收乙個命令列引數,並根據其型別做以下操作:

若引數為普通檔案,則顯示其內容

若引數為壓縮檔案,則解壓縮(如同目錄下有同名檔案則放棄)

若引數為目錄,則將其歸檔並壓縮(如已有同名壓縮檔案則放棄)

若引數不存在,給出錯誤提示並退出

#!/bin/bash

str=

$1len=

$let len=

$len-3

if[ -e $1

]then

if[ -f $1

]thenif[

$=".gz"

]then

gzip -d $1

else

cat$1

fielif

[ -d $1

]then

file=

$1".tar.gz"if[

! -e $file

]then

tar -czvf $file

$1fi

fielse

echo

"no such file! error!"

fi

注意:

test語句的空格

引用引數要寫$整數計算,要用let操作

用{}進行的變數操作不需要$引用,只需要寫變數名

elif也要加then

編寫指令碼exe2,由使用者輸入一組數(以end表示輸入結束),輸出這些數的和,結果保留2位小數。要求使用函式做輸入型別檢查,並給出錯誤提示資訊。

#!/bin/bash

if_is_legal(

)read num

sum=0

while

[$num

!="end"]do

if if_is_legal $num

then

sum=

$(echo

"$sum+$num"|bc

) else

echo

"type error! please input again!"

firead num

done

echo

"scale=2;$sum/1.0"

|bc

注意:

函式如何傳參

函式返回值的寫法

浮點運算的寫法

編寫指令碼exe3,該指令碼對比兩個目錄dir1和dir2(通過引數給出),將dir2中符合下列條件的檔案複製到dir1,並將每一條複製記錄儲存到檔案record中:

該檔案不在dir1中

該檔案比dir1中的同名檔案更新

#!/bin/bash

for item in

`ls $2`

doecho

$item

if[ -e $1

"/"$item

]thenif[

$2"/"

$item -nt $1

"/"$item

]then

cp$2

"/"$item

$1echo

"replace $item in $1"

>> record

fielse

cp$2

"/"$item

$1echo

"copy $item from $2 to $1"

>> record

fidone

echo

"done successfully!"

注意:

檔名的拼接

for迴圈的使用

Linux shell指令碼作業

1 要求讀取 mnt username使用者檔案和 mnt password密碼檔案,並判斷檔案是否存在,若都存在則判斷其行數是否一致.2 要建立的使用者是否存在,若存在則顯示存在不再建立,若不存在則建立 滿足以上條件建立使用者 效果圖 如下 bin bash userfile mnt userna...

linux shell 程式設計

bin bash comments your commands go here 首行中的符號 告訴系統其後路徑所指定的程式bash即是解釋此指令碼檔案的shell程式。除第一行外,以 開頭的行就是注釋行,直到此行的結束。如果一行未完成,可以在行尾加上 這個符號表明下一行與此行會合併為同一行。有環境變...

linux shell 程式設計

1 程式設計入門 shell的簡介。從程式設計師的角度來看,shell本身是一種用c語言編寫的程式,從使用者的角度來看,shell是使用者與linux作業系統溝通的橋梁。使用者既可以輸入命令執行,又可以利用 shell指令碼程式設計,完成更加複雜的操作。在linux gui日益完善的今天,在系統管理...