Linux下shell编程中数组的常见用法及示例

新版本的Bash支持一维数组. 数组元素可以使用符号variable[xx]等方式来初始化. 另外, 脚本可以使用declare -a variable语句来指定一个数组等。要引用一个数组元素(也就是取值), 可以使用大括号, 访问形式为${variable[xx]},当然了,下面是一些老男孩经常使用的方法和对数组的一点理解,如有高见,欢迎指导,先谢谢博友们了。

1.1 shell数组的常用定义方法:

1)方法一:

命令法:

dir=($(ls .))

范例1:手工命令行操作演示

[root@oldboy scripts]# dir=($(ls .))

[root@oldboy scripts]# ls .

oldboy.log apachemon.sh httpdctl

[root@oldboy scripts]# echo ${#dir[*]} <==查看数组的长度

3

命令行循环打印数组元素:

写法1:

for ((i=0; i<`echo ${#dir[*]}`; i++))

do

echo -e "${dir[$i]}\n"

done

提示:i<`echo ${#dir[*]}`可以用更简单的写法i<${#dir[*]}替换,(感谢永夜兄弟)。

====================================

写法2:

for ((i=0; i<${#dir[*]}; i++))

do

echo -e "${dir[$i]}\n"

done

====================================

写法3:

for((i=0;i<${#dir[@]};i++))

do

echo ${dir[${i}]}

done

范例2:通过脚本定义及输出数组元素:

[root@oldboy scripts]# cat printarray.sh

dir=($(ls .))

for ((i=0; i<${#dir[*]}; i++))

do

echo -e "${dir[$i]}\n"

done

[root@oldboy scripts]# sh printarray.sh

oldboy.log

apachemon.sh

httpdctl

printarray.sh

====================================================

2)方法二:列举元素法

array=(red green blue yellow magenta)

array=(

oldboy

zhangyue

zhangyang

)

范例3:列举元素法的脚本例子

[root@oldboy ~# cat test.sh

array=(

oldboy

zhangyue

zhangyang

)

for ((i=0; i< ${#array[*]}; i++))

do

echo "${array[$i]}"

done

echo ----------------------

echo "array len:${#array[*]}"

[root@oldboy ~# sh test.sh

oldboy

zhangyue

zhangyang

array len:3

3)方法3:其实方法三和方法一一样,因具有很好的实战价值因此单独列出讲解

judge=($(curl -I -s ${url_list[$i]}|head -1|tr "\r" "\n"))

范例4:比较专业的生产检查URL地址的脚本(shell数组方法):

[root@oldboy ~]# cat check_url.sh

#!/bin/bash

# this script is created by oldboy.

# e_mail:31333741@qq.com

# qqinfo:49000448

# function:check web url

# version:1.1

. /etc/init.d/functions

url_list=(

http://etiantian.org

http://www.linuxpeixun.com

http://oldboy.blog.51cto.com

)

function wait()

{

echo -n '3秒后,执行该操作.';

for ((i=0;i<3;i++))

do

echo -n ".";sleep 1

done

// www.bianceng.cn

echo

}

function check_url()

{

wait

echo 'check url...'

for ((i=0; i<${#url_list[*]}; i++))

do

# HTTP/1.1 200 OK

judge=($(curl -I -s ${url_list[$i]}|head -1|tr "\r" "\n"))

if [[ "${judge[1]}" == '200' && "${judge[2]}"=='OK' ]]

then

action "${url_list[$i]}" /bin/true

else

action "${url_list[$i]}" /bin/false

fi

done

}

check_url

[root@oldboy ~]# sh check_url.sh

3秒后,执行该操作....

check url...

http://etiantian.org [ OK ]

http://www.linuxpeixun.com [ OK ]

http://oldboy.blog.51cto.com [ OK ]

提示:上述结果是带颜色的。

时间: 2024-09-30 00:30:42

Linux下shell编程中数组的常见用法及示例的相关文章

linux下shell编程中Shift的用法

位置参数可以用shift命令左移.比如shift 3表示原来的$4现在变成了$1,原来的$5现在变成了$2,原来的$1.$2.$3丢弃,$0不移动.不带参数的shift命令相当于shift 1. 非常有用的Unix命令:shift.我们知道,对于位置变量或者命令参数,其个数必须是确定的,或者当shell程序不知道其个数时,可以把所有参数一起赋值变量$*.左路用户要求Shell在不知道位置变量个数的情况下,还能逐个的把参数-处理,也就是在$1后为$2,在$2后面为$3等.在shfit命令执行前变量

Linux下Shell编程快捷键大全(日常整理)_linux shell

有时候,我们需要在 Bash 中重复执行先前的命令.你当然可以使用上方向键来查看之前曾经运行过的命令.但这里有一些更好的方式,例如,数量掌握以下的快捷键. 1) !!:重复执行上一条指令 2) !a:重复执行上一条以a为首的指令 3) !number:重复执行上一条在history表中记录号码为number的指令 4) !-number:重复执行前第number条指令 5) !$:表示获得上一条命令中的最后一项内容 6) 用Ctrl + r 组合键来进入历史搜索模式在history表中查询某条过

Linux下c++编程中,STL模板的使用。

问题描述 Linux下c++编程中,STL模板的使用. Linux下c++编程,使用STL模板,为什么只识别#include 而不识别#include ? 程序中只要有#include 就会报无数多个错! 解决方案 难道c++标准模板库STL中没有包含queue,你可以去根目录去看看include头文件中有没有queue.h 解决方案二: STL头文件目录是否被include进项目中,如果自己写makefile的话,查看下INCLUDE的目录,如果IDE的话就查看下项目设置中的include选项

linux shell编程中date命令的用法

在linux shell编程中,经常用到日期的加减运算 以前都是自己通过expr函数计算,很麻烦 其实date命令本身提供了日期的加减运算 非常方便.例如:得到昨天的时间 date +%Y%m%d --date="-1 day" date 用法: date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] date 可以用来显示或设定系统的日期与时间. 令1.在显示方面,使用者可以设定欲显

Linux下Shell编程

Linux的shell编程  1.什么是shell? 当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shell(外壳)的程序. shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动.挂起.停止甚至是编写一些程序.一般的Linux系统都将bash作为默认的shell. 2.几种流行的shell 目前流行的shell有ash.bash.ksh.csh.zsh等,可以用下面的命令来查看sh

Linux下shell编程实例

1. 判断一文件是不是块或字符设备文件,如果是将其拷贝到 /dev 目录下 read -p "input a file:" filename if [ -b $filename -o -c $filename ] then cp $filename /dev/ fi 2.编写一个脚本,进行简单的减法运算,要求提示输入变量 #!/bin/bash read -p "input a number:" num1 read -p "input another nu

linux下Shell编程--标准的守护进程的启动脚本

一个标准的守护进程的启动脚本: #! /bin/sh WHOAMI=`whoami` PID=`ps -u $WHOAMI | gerp mydaemond | awk '{print $1}'` if (test "$1" = "") then echo "mydaemond [start][stop][version]" exit 0 fi if ( test "$1" = "status") then

Linux下Shell脚本中几种基本命令的替换区别_linux shell

Part 1 : ` command ` 这是 "命令标准输出作为函数标准输入" 操作方法之一,有很大的弊端以及不安全的地方. 缺点一:比较陈旧. 缺点二:容易与单引号混淆.(其实它是你键盘"!"左边那个键) Part 1.5 ` command``与 $(command) 俩者区别 直接看几张图吧,看这图解释他们区别... 大家可以看到俩种表达方式,分别是代表命令直接执行和嵌套执行. 我们发现:执行`` 和 $() 是相同的. 附,其实这里有个小bug...( 橙

详解C++编程中数组的基本用法_C 语言

可以使用数组下标操作符 ([ ]) 访问数组的各个元素. 如果在无下标表达式中使用一维数组,组名计算为指向该数组中的第一个元素的指针. // using_arrays.cpp int main() { char chArray[10]; char *pch = chArray; // Evaluates to a pointer to the first element. char ch = chArray[0]; // Evaluates to the value of the first e