自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳細(xì)介紹Linux shell腳本基礎(chǔ)學(xué)習(xí)(三)

系統(tǒng) Linux
Linux shell腳本學(xué)習(xí)的前兩講都說完了,但是控制流程這部分我們還沒來得及講,這里將控制流程的三個(gè)部分 if、case、select。

Linux shell腳本基礎(chǔ)學(xué)習(xí)第三講,前面我們介紹shell命令和流程控制時(shí),由于篇幅沒能講流程控制,今天流程控制我們這里也只是介紹前面三各部分 if  case 和 select。后面還有三個(gè)部分內(nèi)容只能在Linux shell腳本基礎(chǔ)學(xué)習(xí)第四講中介紹了。

1.1.5 Shell命令和流程控制(2)

3) 流程控制

1.if

"if" 表達(dá)式 如果條件為真則執(zhí)行then后面的部分:

if ....; then

....

elif ....; then

....

else

....

fi

大多數(shù)情況下,可以使用測(cè)試命令來對(duì)條件進(jìn)行測(cè)試。比如可以比較字符串、判斷文件是否存在及是否可讀等等…

通常用" [ ] "來表示條件測(cè)試。注意這里的空格很重要。要確保方括號(hào)的空格。

[ -f "somefile" ] :判斷是否是一個(gè)文件

[ -x "/bin/ls" ] :判斷/bin/ls是否存在并有可執(zhí)行權(quán)限

[ -n "$var" ] :判斷$var變量是否有值

[ "$a" = "$b" ] :判斷$a和$b是否相等

執(zhí)行man test可以查看所有測(cè)試表達(dá)式可以比較和判斷的類型。

直接執(zhí)行以下腳本:

#!/bin/sh

if [ "$SHELL" = "/bin/bash" ]; then

echo "your login shell is the bash (bourne again shell)"

else

echo "your login shell is not bash but $SHELL"

fi

變量$SHELL包含了登錄shell的名稱,我們和/bin/bash進(jìn)行了比較。

快捷操作符

熟悉C語言的朋友可能會(huì)很喜歡下面的表達(dá)式:

[ -f "/etc/shadow" ] && echo "This computer uses shadow passwors"

這里 && 就是一個(gè)快捷操作符,如果左邊的表達(dá)式為真則執(zhí)行右邊的語句。

您也可以認(rèn)為是邏輯運(yùn)算中的與操作。上例中表示如果/etc/shadow文件存在則打印” This computer uses shadow passwors”。同樣或操作(||)在shell編程中也是可用的。這里有個(gè)例子:

#!/bin/sh

mailfolder=/var/spool/mail/james

[ -r "$mailfolder" ]' '{ echo "Can not read $mailfolder" ; exit 1; }

echo "$mailfolder has mail from:"

grep "^From " $mailfolder

該腳本首先判斷mailfolder是否可讀。如果可讀則打印該文件中的"From" 一行。如果不可讀則或操作生效,打印錯(cuò)誤信息后腳本退出。這里有個(gè)問題,那就是我們必須有兩個(gè)命令:

-打印錯(cuò)誤信息

-退出程序

我們使用花括號(hào)以匿名函數(shù)的形式將兩個(gè)命令放到一起作為一個(gè)命令使用。一般函數(shù)將在下文提及。

不用與和或操作符,我們也可以用if表達(dá)式作任何事情,但是使用與或操作符會(huì)更便利很多。

2.case

case :表達(dá)式可以用來匹配一個(gè)給定的字符串,而不是數(shù)字。

case ... in

...) do something here ;;

esac

讓我們看一個(gè)例子。 file命令可以辨別出一個(gè)給定文件的文件類型,比如:

file lf.gz

這將返回:

lf.gz: gzip compressed data, deflated, original filename,

last modified: Mon Aug 27 23:09:18 2001, os: Unix

我們利用這一點(diǎn)寫了一個(gè)叫做smartzip的腳本,該腳本可以自動(dòng)解壓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

您可能注意到我們?cè)谶@里使用了一個(gè)特殊的變量$1。該變量包含了傳遞給該程序的***個(gè)參數(shù)值。

也就是說,當(dāng)我們運(yùn)行:

smartzip articles.zip

$1 就是字符串 articles.zip

3. selsect

select 表達(dá)式是一種bash的擴(kuò)展應(yīng)用,尤其擅長(zhǎng)于交互式使用。用戶可以從一組不同的值中進(jìn)行選擇。

select var in ... ; do

break

done

.... now $var can be used ....

下面是一個(gè)例子:

#!/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"

下面是該腳本運(yùn)行的結(jié)果:

What is your favourite OS?

1) Linux

2) Gnu Hurd

3) Free BSD

4) Other

#? 1

You have selected Linux

上面就是這一講的內(nèi)容,控制流程比較多,這里先介紹這三個(gè)。

責(zé)任編輯:小霞 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-03-05 10:24:33

2010-03-05 10:50:17

2010-03-05 11:58:52

2010-03-05 13:09:23

Linux shell

2010-03-05 13:00:46

2010-03-05 13:19:23

2010-03-05 12:50:38

Linux shell

2011-09-27 13:52:41

2010-06-23 16:05:36

Linux Bash

2010-06-23 15:55:36

Linux Bash

2011-06-21 14:42:37

ECMAScriptJavaScript

2019-08-12 07:45:44

Linux腳本shell

2011-06-22 12:57:54

JVM

2010-02-23 10:32:20

Python 腳本

2024-11-27 09:19:25

2010-06-18 17:35:16

Linux Anacr

2010-06-22 09:28:31

Linux at命令

2009-12-18 11:48:24

網(wǎng)絡(luò)安裝 Linux

2021-02-15 17:29:46

LinuxShell腳本

2010-06-23 15:36:23

Linux Bug B
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)