成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳細介紹Linux shell腳本基礎學習(三)

系統 Linux
Linux shell腳本學習的前兩講都說完了,但是控制流程這部分我們還沒來得及講,這里將控制流程的三個部分 if、case、select。

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

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

3) 流程控制

1.if

"if" 表達式 如果條件為真則執行then后面的部分:

if ....; then

....

elif ....; then

....

else

....

fi

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

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

[ -f "somefile" ] :判斷是否是一個文件

[ -x "/bin/ls" ] :判斷/bin/ls是否存在并有可執行權限

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

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

執行man test可以查看所有測試表達式可以比較和判斷的類型。

直接執行以下腳本:

#!/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進行了比較。

快捷操作符

熟悉C語言的朋友可能會很喜歡下面的表達式:

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

這里 && 就是一個快捷操作符,如果左邊的表達式為真則執行右邊的語句。

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

#!/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" 一行。如果不可讀則或操作生效,打印錯誤信息后腳本退出。這里有個問題,那就是我們必須有兩個命令:

-打印錯誤信息

-退出程序

我們使用花括號以匿名函數的形式將兩個命令放到一起作為一個命令使用。一般函數將在下文提及。

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

2.case

case :表達式可以用來匹配一個給定的字符串,而不是數字。

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。該變量包含了傳遞給該程序的***個參數值。

也就是說,當我們運行:

smartzip articles.zip

$1 就是字符串 articles.zip

3. selsect

select 表達式是一種bash的擴展應用,尤其擅長于交互式使用。用戶可以從一組不同的值中進行選擇。

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"

下面是該腳本運行的結果:

What is your favourite OS?

1) Linux

2) Gnu Hurd

3) Free BSD

4) Other

#? 1

You have selected Linux

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

責任編輯:小霞 來源: 互聯網
相關推薦

2010-03-05 10:24:33

2010-03-05 10:50:17

2010-03-05 11:58:52

2010-03-05 12:50:38

Linux shell

2010-03-05 13:00:46

2010-03-05 13:09:23

Linux shell

2010-03-05 13:19:23

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

2009-12-18 11:48:24

網絡安裝 Linux

2010-06-18 17:35:16

Linux Anacr

2010-06-22 09:28:31

Linux at命令

2010-01-05 16:56:28

2010-06-23 15:36:23

Linux Bug B
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美黄视频 | 国产亚洲精品久久yy50 | av资源网站 | 国产精品久久久久久久久久久久久 | 久久国产免费 | 亚洲一区二区 | 精品二区| 免费h在线 | 欧美精品一区在线 | 久久这里只有精品首页 | 依人成人 | 国产精品视频一区二区三区, | 永久看片 | 小草久久久久久久久爱六 | 欧美激情99 | 久久久xx | www精品美女久久久tv | 亚洲第一av| 国产1区在线 | 久久亚洲美女 | 中文字幕在线一区二区三区 | 久久精品欧美电影 | 日韩av成人在线 | 综合九九 | 国产精品高潮呻吟久久aⅴ码 | 久久久国产视频 | 亚洲精品一区二区在线观看 | 久久久日韩精品一区二区三区 | 成人综合一区 | a在线免费观看 | 亚洲网站观看 | 欧美精品欧美精品系列 | 午夜精品一区 | 91看片免费 | 亚洲精品国产综合区久久久久久久 | 国产精品福利在线观看 | 欧美一级免费 | 91久久久久久久久久久久久 | 中文字幕一区二区三区乱码在线 | av一二三区| 国产偷录叫床高潮录音 |