Shell基礎 六 位置引數及case分支

2021-08-24 20:42:47 字數 2098 閱讀 6063

標記

$0

:指令碼檔案絕對路勁

$1-9

:小於10位置引數標記

$:大於10的位置引數標記

$#:引數總數

$*:展開成乙個從 1 開始的位置引數列表。當它被用雙引號引

起來的時候,展開成乙個由雙引號引起來的字串,包含了

所有的位置引數,每個位置引數由 shell 變數 ifs 的第乙個

字元(預設為乙個空格)分隔開。

$@:展開成乙個從 1 開始的位置引數列表。當它被用雙引號引

起來的時候,它把每乙個位置引數展開成乙個由雙引號引起

來的分開的字串。

shift:多引數列表逐一訪問

用法

每次 shift 命令執行的時候,變數 $2 的值會移動到變數 $1 中,

變數 $3 的值會移動到變數$2 中,依次類推。變數 $# 的值也會相應的減 1。

舉例
#!/bin/bash

# posit-param2: script to display all arguments

count=1

while [[ $#

-gt0 ]]; do

echo

"argument $count = $1"

count=$((count + 1))

shift

done

基本語法
case word in

[pattern [| pattern]...) commands ;;]...

esac

模式匹配 pattern

舉例

#!/bin/bash

read -p "enter word > "

case

$reply

in a|a) echo

"is a or a." ;;

[[:alpha:]]) echo

"is a single alphabetic character." ;;

[abc][0-9]) echo

"is a, b, or c followed by a digit." ;;

???) echo

"is three characters long." ;;

*.txt) echo

"is a word ending in '.txt'" ;;

*) echo

"is something else." ;;

esac

匹配多個測試條件
#!/bin/bash

# case4-2: test a character

read -n 1 -p "type a character > "

# ;;& 用於匹配多個測試條件,匹配到乙個後繼續匹配下乙個而不是直接退出。

case $reply in

[[:upper:]]) echo "'$reply' is upper case." ;;&

[[:lower:]]) echo "'$reply' is lower case." ;;&

[[:alpha:]]) echo "'$reply' is alphabetic." ;;&

[[:digit:]]) echo "'$reply' is a digit." ;;&

[[:graph:]]) echo "'$reply' is a visible character." ;;&

[[:punct:]]) echo "'$reply' is a punctuation symbol." ;;&

[[:space:]]) echo "'$reply' is a whitespace character." ;;&

[[:xdigit:]]) echo "'$reply' is a hexadecimal digit." ;;&

esac

Android學習心得(六) 位置服務

本節主要是介紹一下gps的使用,google map和gps的結合是android上主要應用之一,android market中,此類產品所佔比例不小。我們在上節的 中新增如下內容 locationmanager lm mylocationlistener locationlistener lm l...

shell 三 位置引數

執行 shell 指令碼檔案時我們可以給它傳遞一些引數,這些引數在指令碼檔案內部可以使用 n的形式來接收,例如,1 表示第乙個引數,2 表示第二個引數,依次類推 在講解變數的命名時,我們提到 變數的名字必須以字母或者下劃線開頭,不能以數字開頭 但是位置引數卻偏偏是數字,這和變數的命名規則是相悖的,所...

神奇六位數

有乙個6位的正整數,它有個很神奇的性質 分別用2 3 4 5 6去乘它,得到的仍然是6位數,並且乘積中所包含的數字與這個6位數完全一樣!只不過是它們的順序重新排列了而已。請計算出這個6位數。這是乙個整數,請通過瀏覽器提交答案,不要填寫任何多餘的內容 比如說明性的文字 142857 include i...