shell編程數組
1. linux,shell如何把字元串變成數組
echo $url | cut -d , -f 1
cut是切割命令,-d表示分隔符,這里是逗號,-f表示取第幾個,這里是第一個
注意和數組不一樣,數組是取第0個。
2. 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內),你會發現生成的隨機數還是一樣的。
3. linux shell 腳本 求任意10個數的最大值。(使用數組)
讀取10個數字存入數組中
然後使用一個變數max將它的初始值設置為數組中第一個元素的值
接著從數組中第二個元素開始遍歷整個數組
如果某個元素的值大於max則將max設置為該值
如此遍歷完整個數組後max中便是整個數組中最大的值
下面是一個簡單的示例代碼
#!/bin/bash
echo-n'輸入10個數:'
read-aa
max=${a[0]};
foriin{1..9}
do
if[${a[$i]}>$max]
then
max=${a[$i]}
fi
done
echo"最大值為:$max"
exit0
4. 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
5. shell中數組怎麼循環賦值,急
Bash環境可以這樣。
#!/bin/bash
for ((i=1;i<=100;i++))
do
name[$i]=$i
echo ${name[$i]} #為方便檢查,加了列印
done
通用點的(符合POSIX標准)可以這樣:
#!/bin/sh
declare -a name
for i in `seq 100`
do
name[$i]=$i
echo ${name[$i]} #為方便檢查,加了列印
done