Linux/UNIX不同shell环境下数组的处理
2009-09-01 14:18
645 查看
有遗漏和不当的地方请大家指正,谢谢!
[关于声明]
比较通用的做法,如ksh和bash
declare -a 数组名
set -A varname
var1 var2 var3 varn
[关于赋值]
下面的两种这种方法适用于bash和ksh。
定义一
varname=(var1
var2 var3
varn)
定义二
varname[0]=var1
varname[1]=var2
varname[2]=var3
varname[n-1]=varn
定义三
在csh我们需要这样定义:
set
varname=(var1 var2 var3 varn)
set varname[1]=var1
set
varname[2]=var2
set varname[3]=var3
set varname
=varn
[关于引用]
全部引用
方法一
适用于bash、ksh、csh等大部分shell。
${varname[*]}
方法二
只适用于bash、ksh,对于csh不适用。
${varname[@]}方法三只适用于csh,不支持ksh和bash。
$varname
单独引用
语法适用于bash、ksh、csh等大部分shell,但是在csh/tcsh下的意义和其它shell有差异。
${varname
}
例如:echo
${barname[3]}
数组包含数值的数目方法一:
只适用于bash和ksh,不支持csh。
${#varname[*]}
方法二:
只支持csh,不支持bash和ksh。
$#varname
数组中某一个值的字符长度
只适用于bash和ksh,不支持csh。
${#varname[1]}
[元素的添加、删除]
删除数组中元素:
该方法适用于bash、ksh,不支持csh。
unset
varname[5]
关于数组中元素的值的清除,即置空:
bash和ksh下这样操作,不支持csh
varname[5]=
#清除数组varname中的第六个元素
关于数组的清除:
适用于bash、ksh、csh等大部分shell。
unset
varname
向数组中添加元素:
方法一、二只适用于bash、ksh,不适用于csh;
方法一:
varname=(${varname[*]} varn-1 varn
varn+1)
方法二:
varname[${#varname[*]}]=varn
方法三:
是csh特有的。
set
varname=($varname varn+1 varn+2) #或者$varname用${varname[*]}替换。
[关于数组的批量处理]
这部分内容,说白了就是综合运用各种shell的内建循环命令。只要对前面的内容熟悉了,并对各种shell的循环命令有一定的了解,难度就不是很大。
由于涉及bashkshcsh下的实现及不同的语法形式,涉及数组的赋值、添加和删除元素、读取多个方面。所以计划单独一篇文章来说明。
[关于声明]
比较通用的做法,如ksh和bash
declare -a 数组名
注意在ksh下还支持另外一种独特的变量声明赋值语法比较特殊。 |
var1 var2 var3 varn
末了要说明一下,一般任意的shell下变量可以拿来就用,不必声明。 |
下面的两种这种方法适用于bash和ksh。
定义一
varname=(var1
var2 var3
varn)
定义二
varname[0]=var1
varname[1]=var2
varname[2]=var3
varname[n-1]=varn
定义三
在csh我们需要这样定义:
set
varname=(var1 var2 var3 varn)
set varname[1]=var1
set
varname[2]=var2
set varname[3]=var3
set varname
=varn
特别注意在csh和其它shell中不同的是数组的下标是从1开始的。 |
全部引用
方法一
适用于bash、ksh、csh等大部分shell。
${varname[*]}
方法二
只适用于bash、ksh,对于csh不适用。
${varname[@]}方法三只适用于csh,不支持ksh和bash。
$varname
单独引用
语法适用于bash、ksh、csh等大部分shell,但是在csh/tcsh下的意义和其它shell有差异。
${varname
}
例如:echo
${barname[3]}
请严格区分csh与bashcsh的区别。因为在csh中没有下标为0的数组元素,下标的序数是从1开始的。 |
只适用于bash和ksh,不支持csh。
${#varname[*]}
方法二:
只支持csh,不支持bash和ksh。
$#varname
数组中某一个值的字符长度
只适用于bash和ksh,不支持csh。
${#varname[1]}
在bash、ksh下 $varname与${varname[0]}的含意是一样的; $varname[1]与${varname[1]}含意是不一样的,$varname[1]等价于${varname[0]}"[1]"。在csh下 $varname与${varname[*]}的含意是一样的。 |
删除数组中元素:
该方法适用于bash、ksh,不支持csh。
unset
varname[5]
关于数组中元素的值的清除,即置空:
bash和ksh下这样操作,不支持csh
varname[5]=
#清除数组varname中的第六个元素
关于数组的清除:
适用于bash、ksh、csh等大部分shell。
unset
varname
向数组中添加元素:
方法一、二只适用于bash、ksh,不适用于csh;
方法一:
varname=(${varname[*]} varn-1 varn
varn+1)
方法二:
varname[${#varname[*]}]=varn
方法三:
是csh特有的。
set
varname=($varname varn+1 varn+2) #或者$varname用${varname[*]}替换。
[关于数组的批量处理]
这部分内容,说白了就是综合运用各种shell的内建循环命令。只要对前面的内容熟悉了,并对各种shell的循环命令有一定的了解,难度就不是很大。
由于涉及bashkshcsh下的实现及不同的语法形式,涉及数组的赋值、添加和删除元素、读取多个方面。所以计划单独一篇文章来说明。
相关文章推荐
- Linux/unix不同shell环境下数值运算的处理
- linux shell+vim处理不同数据库文本之间的转换
- linux下JDK安装,不同用户不同SHELL下环境变量设置
- linux shell+vim处理不同数据库文本之间的转换
- shell脚本兼容linux/unix与windows/cygwin的基础(注意处理好CR, LF, CR/LF 回车 换行的问题)
- shell脚本兼容linux/unix与windows/cygwin的基础(注意处理好CR, LF, CR/LF 回车 换行的问题)
- linux Shell入门:掌握Linux,OS X,Unix的Shell环境
- linux Shell入门:掌握Linux,OS X,Unix的Shell环境
- unix/linux 中的SHELL 参数多于9个的处理方法
- Shell入门:掌握Linux,OS X,Unix的Shell环境
- Understanding Unix/Linux Programming 笔记:chapter 9:可编程的shell、shell变量和环境; chapter 10:I/O重定向和管道
- php 变量 【PHP_EOL】 解决不同环境(win,linux,unix)下的按回车分隔问题
- ORACLE10G 在 LINUX环境下日志损坏后修复并重新处理数据(TEST5实例)
- 【Unix/Linux.Shell Script】Shell Script的执行及特殊字符
- 【Unix/Linux.Shell Script】退出状态,exit命令
- 【Unix/Linux.Shell Script】Shell Script程序的流程控制语句
- Linux/Unix环境下的Make和Makefile详解
- oracle:unix(linux适用)环境下使用occi远程连接oracle数据库(新人教学版)---1
- [原]Linux环境-Jenkins实战-分布式构建-自动化持续集成-自动化部署-gitlab-svn-shell启动tomcat
- Unix/Linux环境下的Socket编程