shell變量,字符串,數組


一、shell變量定義:

命名只能使用英文字母,數字和下划線,首個字符不能以數字開頭;

中間不能有空格,可以使用下划線;

不能使用標點符號;

不能使用bash里的關鍵字。

變量使用:

使用一個定義過的變量,只要在變量名前面加美元符號即可,

your_name="test"
echo $your_name
echo ${your_name}

花括號可以省略,但以下情況需要添加:

for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done

不然解釋器會把$skillScript當成一個變量。

只讀變量:

使用readonly命令可以將將變量定義為只讀變量,只讀變量的值不能被改變。

刪除變量:

使用unset命令可以刪除變量。

#!/bin/sh

test="11111"
readonly test
test="22222"  #報錯,不可修改

unset test
echo $test    #輸出為空,變量已刪除

 

運行shell時,會同時存在三種變量:

(1)局部變量,在腳本或命令中定義,僅在當前shell實例中有效,其他shell啟動的程序不能訪問局部變量;

(2)環境變量,包括shell啟動的程序,都能訪問環境變量;

(3)shell變量,由shell程序設置的特殊變量。shell變量中有一部分是環境變量,有一部分是局部變量。

 

二、shell字符串

字符串可以用單引號,也可以用雙引號,也可以不用引號。

str='this is a string'

單引號限制:

單引號里的任何字符都會原樣輸出,單引號字符串中的變量是無效的;

單引號字符串中不能出現單獨一個的單引號(也不能使用轉義符)。

雙引號:

your_name="test"
str="Hello, I know you are \"$your_name\"! \n"
echo -e $str    # -e參數表明處理特殊字符,不會當成一般文字輸出,此處表示換行而不直接輸出"\n"

輸出為:
Hello, I know you are "test"!

雙引號優點:引號里可以有變量,可以出現轉義字符。

獲取字符串長度:

string="abcd"
echo ${#string} #輸出4

提取子字符串:

str="Hello, I know you!"
echo ${str:1:4}  #輸出從第2個字符開始的4個字符  輸出ello

查找子字符串:

str="Hello, I know you!"
echo `expr index "$str" l`  #輸出 3  注意和提取字符串的索引區別

 

三、shell數組

bash支持一維數組,下標由0開始,下標可以是整數或算術表達式。

定義數組:

array_name=(value0 value1 value2 value3)
或者
array_name=(
value0
value1
value2
value3
)
或單獨定義數組的各個分量
array_name[0]=value0
array_name[1]=value1
array_name[n]=value

讀取數組:

${數組名[下標]}

例如:

value=${array_name[1]}
使用@符號可以獲取數組中的所有元素,如下:
echo ${array_name[@]}

獲取數組長度:和獲取字符串長度的方法相同

length=${#array_name[@]}  #取得數組元素的個數
#或者
length=${#array_name[*]}

len=${#array_name[n]} #獲取數組單個元素的長度

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM