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