當前位置:首頁 » 編程軟體 » bash腳本數組

bash腳本數組

發布時間: 2022-12-29 23:35:07

『壹』 bash腳本函數,如何正確返回元素中帶有空格的數組

1、用 getline 把一行的字母串 保存在一個string 裡面2、直接字元串相加:比如要把hello world 存一個string里 輸入hello world 第一個賦值給一個string 對象第二個 直接在第一個string 對象後面加空格再加上world 這樣就可以將有空格的值保存的數組里了

『貳』 shell腳本中數組的基本用法

首先要告訴大家,Bash Shell 只支持一維數組,而且初始化的時候不用定義數組的大小。

(一) 定義數組,方法1:使用小括弧賦值

            array1=(A B C D)或者array1=("A" "B" "C" "D")

            定義數組,方法2:使用數組下表挨個賦值

            array2[0]=a

            array2[1]=b

            可能會有朋友會問問什麼不用declare聲明也能用,在這跟大家拓展下,所有變數不用顯式定義都能用作數組,所以用不用declare聲明都可以

(二) 讀取數組

            ${array[下標值]},例如:${array1[2]}

            若要獲取數組中全部的值,使用${array[*]}或者${array[@]}

(三) 獲取數組長度   ${#array1[*]},關鍵在加了個#

(四) 刪除數組內容元素  unset ${array1[下標]} ,刪除整個數組   unset array1

『叄』 shell腳本生成[4,9]范圍內的隨機整數,包含邊界值4和9,並將隨機數序列存放在一個數組中,腳本實現

#!/bin/sh
declare -a arr #聲明arr為數組
arr=(`seq 4 9 | awk 'BEGIN{srand();ORS=" "} {b[rand()]=$0} END{for(x in b) print b[x]}'`)
echo ${arr[*]} #列印數組array的所有元素
exit 0

說明:
生成[4,9]范圍內不重復的隨機整數,並保存到數組arr中。
seq 4 9 用於生成4~9的整數序列(包含邊界值4和9)。
awk中的rand() 函數用於隨機產生一個0到1之間的小數值(保留小數點後6位)。
由於rand()只生成一次隨機數,要使用srand() 函數使隨機數滾動生成(括弧里留空即默認採用當前時間作為隨機計數器的種子)。這樣以秒為間隔,隨機數就能滾動隨機生成了。

限制:
由於以秒為間隔,所以如果快速連續運行兩次腳本(1s內),你會發現生成的隨機數還是一樣的。

『肆』 bash腳本中,條件判斷一個字串是否在數組中,除了列舉之外,還有什麼簡單的寫法嗎

只能是遍歷數組元素來比較:
if [ "$str1「 = "conditon1" ]; then
action1
elif [ 「$str1」 = "conditon3" ]; then
action 3
fi
for elem in ${array[@]}
do
if [ "$str1" = "$elem" ]; then
action2
break
fi
done

『伍』 shell腳本中,無法獲取「關聯數組」(字典)的key,嘗試過很多方法,輸出都不對,求教

  1. 看下你使用的bash版本到沒到4.0,使用指令bash --version查看

  2. 使用變數前先確認該變數是否在之前已經被定義過了 使用source 命令或 . 命令啟動腳本時是不會開辟新線程的所以你在bash窗口裡定義的沒加local 變數 都會被腳本繼承 此時你可以先刪除這個變數 即定義phone 時 unset phone

『陸』 shell腳本主要有哪些

第一個shell腳本程序:

#!/bin/bash
# 上面中的 #! 是一種約定標記, 它可以告訴系統這個腳本需要什麼樣的解釋器來執行;echo "Hello, world!"

變數:

定義變數:

country="China"Number=100

注意: 1,變數名和等號之間不能有空格;

2,首個字元必須為字母(a-z,A-Z)。

3, 中間不能有空格,可以使用下劃線(_)。

4, 不能使用標點符號。

5, 不能使用bash里的關鍵字(可用help命令查看保留關鍵字)。

使用變數:

只需要在一個定義過的變數前面加上美元符號$就可以了, 另外,對於變數的{} 是可以選擇的, 它的目的為幫助解釋器識別變數的邊界.

country="China"echo $countryecho ${country}echo "I love my ${country}abcd!"

#這個需要有{}的;

重定義變數:直接把變數重新像開始定義的那樣子賦值就可以了:

country="China"country="ribenguizi"

只讀變數: 用 readonly 命令 可以把變數字義為只讀變數。

readonly country="China"#或
country="China"readonly country

刪除變數: 使用unset命令可以刪除變數,但是不能刪除只讀的變數。用法:

unset variable_name

變數類型

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

1) 局部變數

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

2) 環境變數

所有的程序,包括shell啟動的程序,都能訪問環境變數,有些程序需要環境變數來保證其正常運行。必要的時候shell腳本也可以定義環境變數。

3) shell變數

shell變數是由shell程序設置的特殊變數。shell變數中有一部分是環境變數,有一部分是局部變數,這些變數保證了shell的正常運行

特殊變數:

其中, 1. 取值後面必須為關鍵字 in,每一模式必須以右括弧結束。取值可以為變數或常數。匹配發現取值符合某一模式後,其間所有命令開始執行直至 ;;。;; 與其他語言中的 break 類似,意思是跳到整個 case 語句的最後。2. 如果無一匹配模式,使用星號 * 捕獲該值,再執行後面的命令。

『柒』 shell腳本中數組array常用技巧學習實踐

shell中數組的下標默認是從0開始的
1。將字元串放在數組中,獲取其長度
#!/bin/bash
str=a
b
--n
d
array=($str)
length=${#array[@]}
echo
$length
for
((i=0;
i<$length;
i++))
do
echo
${array[$i]}
done
執行結果:
[oracle@99bill-as9
array]$
sh
length.sh
4
a
b
--n
d
列印字元串:
#!/bin/bash
str=a
b
c
for
i
in
$str
do
echo
$i
done
或者:
#!/bin/bash
str=a
b
c
array=($str)
for
((i=0;i<${#array[@]};i++))
do
echo
${array[$i]}
done
執行結果:
2。字元串用其他字元分割時
#!/bin/bash
str2=a#b#c
a=($(echo
$str2
|
tr
'#'
'
'
|
tr
-s
'
'))
length=${#a[@]}
for
((i=0;
i<$length;
i++))
do
echo
${a[$i]}
done
#echo
${a[2]}
執行結果:
3。數組的其他操作
#!/bin/bash
str=a
b
--n
dd
array=($str)
length=${#array[@]}
#ouput
the
first
array
element直接輸出的是數組的第一個元素
echo
$array
#Use
subscript
way
access
array用下標的方式訪問數組元素
echo
${array[1]}
#Output
the
array輸出這個數組
echo
${array[@]}
#Output
in
the
array
subscript
for
3
the
length
of
the
element輸出數組中下標為3的元素的長度
echo
${#array[3]}
#Output
in
the
array
subscript
1
to
3
element輸出數組中下標為1到3的元素
echo
${array[@]:1:3}
#Output
in
the
array
subscript
greater
than
2
elements輸出數組中下標大於2的元素
echo
${array[@]:2}
#Output
in
the
array
subscript
less
than
2
elements輸出數組中下標小於2的元素
echo
${array[@]::2}
執行結果:
a
b
a
b
--n
dd
2
b
--n
dd
--n
dd
a
b
4。遍歷訪問一個字元串(默認是以空格分開的,當字元串是以其他分隔符分開時可以參考2)
#!/bin/bash
str=a
--m
for
i
in
$str
do
echo
$i
done
執行結果:
a
--m
5。如何使用echo輸出一個字元串str=-n.
由於-n是echo的一個參數,所以一般的方法echo
$str是無法輸出的.
解決方法可以有:
echo
x$str
|
sed
's/^x//'
echo
-ne
$str/n
echo
-e
$str/n/c
printf
%s/n
$str(這樣也可以)
作者祝瑩的專欄

『捌』 bash腳本函數可不可以返回數組

bash 的函數只能返回整數值, 不能返回數組。 應該在函數里直接給數組賦值或者操作數組,比如下面的代碼


test(){
m=(12345)
}

unsetm
#此時無m變數

test
#此時m變數為一數組

echo${m[1]}

『玖』 linux shell腳本中,數組名稱是一個變數,怎麼列印出它裡面的元素

題主你好,

代碼及測試截圖如下:

希望可以幫到題主, 歡迎追問.

熱點內容
什麼是廣告腳本設計 發布:2025-09-18 05:52:09 瀏覽:650
移動版我的世界伺服器 發布:2025-09-18 05:38:49 瀏覽:958
使用jsp腳本輸出九九乘法表 發布:2025-09-18 05:22:11 瀏覽:663
出行解壓 發布:2025-09-18 05:20:54 瀏覽:574
安卓手機畫線怎麼用 發布:2025-09-18 05:16:43 瀏覽:697
解壓吃蔬菜 發布:2025-09-18 05:10:04 瀏覽:818
php判斷數組個數 發布:2025-09-18 04:54:02 瀏覽:664
linuxmd5c 發布:2025-09-18 04:47:04 瀏覽:345
數據結構編譯器哪個好 發布:2025-09-18 04:33:52 瀏覽:437
ad轉換c語言 發布:2025-09-18 04:21:21 瀏覽:755