linux - shell中保存命令结果到数组的问题

 lipei0927 发布于 2022-10-31 06:08
#!/bin/bash
i=0
for line in `ls`
do
    name[${i}]=$line
    let i=${i}+1
done
echo ${#name[@]}

上述代码可以将命令ls执行结果可以保存到name的数组中

i=0
ls | while read line
do
    name[${i}]=$line
    let i=${i}+1
done
echo ${#name[@]}

但是这段代码并不能完成同样的功能,此时echo $line 的结果也是分开的但是保存不到数组中。while可以循环正确的次数,echo结果正常,但是数组长度为0。这是什么情况?

1 个回答
  • 是管道造成的。
    shell中管道两侧的命令是分别在两个子shell中执行的,而子shell中定义的变量在父shell中是不可见的,so...

    2022-10-31 22:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有