2 zhanfengfeng zhanfengfeng 于 2017.01.11 23:38 提问

shell 数组赋值取值问题

test.txt内容
1
2
3
4
5

shell 内容
#!/bin/bash

i=0
array=()
cat test.txt | while read -r line
do
echo "line="$line
array[$i]="$line"
echo "array[$i] = ${array[$i]}"
i=expr $i + 1
done

echo "array number = ${#array[@]}"

echo ${array[@]}
for var in ${array[@]};
do
echo "var="$var
done

执行shell后返回结果如下:
moonspirit@ubuntu:~/script$ ./test.sh
line=1
array[0] = 1
line=2
array[1] = 2
line=3
array[2] = 3
line=4
array[3] = 4
line=5
array[4] = 5
array number = 0

请问为什么var打印不出之前赋值的类容?

1个回答

devmiao
devmiao   Ds   Rxr 2017.01.14 00:33
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
linux操作shell脚本定义数组赋值取值
Linux Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。 bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。 定义数组 在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为: 复制
EL表达式在前后台的取值赋值问题
EL表达式在前后台的取值赋值问题 包括MAP,LIST,数组等
shell 数组赋值
shell编程,给数组赋值及两个数组初始化与比较 #!/bin/sh output_files=( $(cat outfiles) ) for (( i = 0; i < ${#output_files[@]}; ++i )); do echo "ar[$i] = ${output_files[i]}"; done input_files=( $(cat files) ) f
顺序数组的实现
顺序数组的实现 顺序数组的构建 顺序数组的销毁 顺序数组的赋值 顺序数组的取值
redis-cli结果值变量赋值字符串乱码
这几天给生产环境的redis监控client connection数。 写了个cron定时去client信息发到公司的一个chat工具的hook。 脚本大概如下connection_cnt=`redis-cli -h127.0.0.1 -P3306 -a xxxx info clients | grep connected_clients | cut -d":" -f2` curl -X POST
把awk中的数组赋值给shell中的数组
把awk中的数组赋值给shell中的数组 博客分类: linux/shell/sed/awk CC++C#JavaScriptBash  方法1,通过eval Shell代码   #!/bin/bash  ipstr="192.168.1.152,192.168.1.153";  #declare -a arr;  eval $(echo $ipstr | 
Linux Shell中的数组及遍历
在Linux下使用shell的时候,为方便起见,偶尔会用到一下数组。数组的申明方式是: [java] view plaincopyprint? array=(element1 element2 element3 .... elementN)   也就是直接用圆括号包数组元素包起来,数组元素之间用空格隔开就行了。   数据
linux shell数组赋值方法(常用)
Bash中,数组变量的赋值有两种方法:   (1) name = (value1 ... valuen) 此时下标从0开始   (2) name[index] = value   下面以一个简单的脚本来说明,脚本内容如下:   #!/bin/bash   #定义数组   A=(a b c def)   #把数组按字符串显示输出   echo ${A[
shell 变量的变量赋值与值的获取
有时候在shell编程中,会遇到用变量的值继续作为变量进行赋值或者获取值。 ATTRS="mysqldbadm mysqldbpassword" #变量的变量赋值 attrs_init() { for attr in ${ATTRS}; do attr_value="test" eval "export $attr=$attr_value" ech
bash数组和字典
#!/bin/bash echo "shell定义字典" #必须先声明 declare -A dic dic=([key1]="value1" [key2]="value2" [key3]="value3") #打印指定key的value echo ${dic["key1"]} #打印所有key值 echo ${!dic[*]} #打印所有value echo ${dic[*]} #遍历ke