遇到一个奇怪的问题,如下是读取当前目录下的文件和目录,并把它存放到数组中, #!/bin/bash x=0 for i in `ls -l` do a[$x]="$i" x=`expr ${x} + 1` done echo ${a[@]} 奇怪的是在其他版本的系统中是可以正常运行的..我的环境就不行.为Ubuntu 8.04.4 LTS 报错信息为: test.sh: 8: a[0]=abc: not found ....... test.sh: 8: a[153]=book: not found test.sh: 9: Bad substitution 所有的赋值好像看上去都已经可以,就是报 not found...
by china_u - Shell - 2010-11-15 16:43:54 阅读(5421) 回复(3)
我看到一个脚本中有这么一段: while read DATA do eval $DATA eval "declare DATEBOOK_${mm}_${dd}_$yy =$msg" done < eval.dat 知道变量数组DATEBOOK_${mm}_${dd}_$yy已经被赋值了$msg,可是如何将变量DATEBOOK_${mm}_${dd}_$yy的值输出呢? 百思不得其解,求教各位! 注:eval.dat mm=01 dd=12 yy=2004 msg=' Appt with Kell ' mm=03 dd=09 yy=2004 msg=' Attend a meeting' mm=04 dd=11 yy=2004 msg=' An nice day! '
现在执行一个命令,它会输出一些规则的信息:其中第一列纪录的是需要删除的文件名。 要写脚本删除这些文件,希望通过awk把这些文件名保存到shell变量中,可是没有好的办法:em06: 下面是我写的笨办法: mmm=$(command | awk 'END {print $NR}') for ((i = 1; i < $mmm; i++)) do rm -f $(command | awk -v nr="$i" 'NR == nr {print $0}') done 请教各位,有没有办法只执行一次awk命令,把那些文件名保存到一组变量里,...
$ echo $bash_VERSION 4.2.37(1)-release 现在我弄一个数组出来:[code]foo=(A B C) [/code],这样子不用声明就自然形成一个数组,于是在没有改变IFS默认值的情况下,可以如此取出各个元素的值:[code]echo ${foo[0]}[/code]A[code]echo ${foo[1]}[/code]B[code]echo ${foo[2]}[/code]C 上面说的是最普通的方式,下面是我有疑问的地方。 我现在有一个文件a.txt,内容是 D E F 现在我把这个文件的内容以这样的方式赋值给一个变量...
有个文件如下:[code]cat makelib.ini src/pub/libpara libpara src/pub/libpub libpub sss src/pub/db_public_lib db_public_lib src/pub/libring_buf libring_buf src/pub/libring_buf libring_buf_nolog src/pub/logger liblogger src/pub/libtableout libtableou...
$ array[1.2.3.4]=10 -bash: 1.2.3.4: syntax error in expression (error token is ".2.3.4") 我有多个ip,要进行赋值存到数组中,上面的方式不行,需要怎么赋值才行,请教
bash 数组用法小结 【小蜗牛五二无聊之作 】 bash只支持一维数组,但参数个数没有限制。 声明一个数组: declare -a array (其实不用声明,按数组方式直接赋值给变量即可,bash就知道那是数组) 数组赋值: (1) array=(var1 var2 var3 ... varN) (2) array=([0]=var1 [1]=var2 [2]=var3 ... [n]=varN) (3) array[0]=var1 arrya[1]=var2 ... array[n]=varN 计算数组元素个数: ${#array[@]} 或者...
【小蜗牛五二无聊之作 】 bash只支持一维数组,但参数个数没有限制。 声明一个数组: [color="#ff1493"]declare -a array (其实不用声明,按数组方式直接赋值给变量即可,bash就知道那是数组) 数组赋值: [color="#ff1493"](1) array=(var1 var2 var3 ... varN) [color="#000000"](2) array=([0]=var1 [1]=var2 [2]=var3 ... [n]=varN) [color="#000000"](3) array[0]=var1 arrya[1]=var2 ... arr...
比方打印出所有的非空的元素以及下标。
我目前的方法是
[code]
a_len=${#a[@]}
for((count=0,i=0;count
RT.. 代码如下,我想把tmp里的内容转变成数组如,请问如何做? 谢谢 . $tmp输出的内容为: 2 5 6 [code] IFS="\n"; arr=($(echo $tmp)); echo ${arr[1]}; [/code]
1.# **|uniq -c 1 1 1 9 1 36 1 69 1 76 2. 把这些值付给数组,然后调用数组元素运算。 这样的东西在shell写如何写 这个在perl用hash比较容易,在shell中不知道如何做了 [ 本帖最后由 huanghaojie 于 2009-2-18 15:04 编辑 ]