編寫指令碼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日益完善的今天,在系統管理...