linux shell 腳本入門
2.case
case :表達式可以用來匹配一個給定的字符串,而不是數(shù)字。
case ... in
...) do something here ;;
esac
讓我們看一個例子。 file命令可以辨別出一個給定文件的文件類型,比如:
file lf.gz
這將返回:
lf.gz: gzip compressed data, deflated, original filename,
last modified: Mon Aug 27 23:09:18 2001, os: Unix
我們利用這一點寫了一個叫做smartzip的腳本,該腳本可以自動解壓bzip2, gzip 和zip 類型的壓縮文件:
#!/bin/sh
ftype=`file $1`
case $ftype in
$1: Zip archive*)
unzip $1 ;;
$1: gzip compressed*)
gunzip $1 ;;
$1: bzip2 compressed*)
bunzip2 $1 ;;
*) echo File $1 can not be uncompressed with smartzip;;
esac
您可能注意到我們在這里使用了一個特殊的變量$1。該變量包含了傳遞給該程序的第一個參數(shù)值。
也就是說,當(dāng)我們運行:
smartzip articles.zip
$1 就是字符串 articles.zip
3. selsect
select 表達式是一種bash的擴展應(yīng)用,尤其擅長于交互式使用。用戶可以從一組不同的值中進行選擇。
select var in ... ; do
break
done
.... now $var can be used ....
下面是一個例子:
#!/bin/sh
echo What is your favourite OS?
select var in Linux Gnu Hurd Free BSD Other; do
break
done
echo You have selected $var
下面是該腳本運行的結(jié)果:
What is your favourite OS?
1) Linux
2) Gnu Hurd
3) Free BSD
4) Other
#? 1
You have selected Linux
評論