linux shell ls 输出存进数组变量

本文介绍如何使用Shell脚本将ls命令的输出保存到数组中,并遍历数组内容进行处理,包括输出到屏幕和获取数组长度的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将ls的输出存到list中 再转存到 filelist数组中:

c=0
list=`ls`
for file in $list
do
  filelist[$c]=$file
  c=$[c+6]
done

把filelist数组内容输出到屏幕上:

b=0
while [ $b -lt $c ]
do
  echo ${filelist[$b]}
  ((b++))
done

#或者

b=0
for value in ${filelist[*]}
do 
  echo $value
done

在屏幕上输出filelist数组长度:

echo ${#filelist[*]}

用 ${#数组名[@或*]} 可以得到数组长度

 

<think>好的,用户想知道如何将Linux输出到屏幕的数据重定向到数组里。首先,我需要理解用户的需求。他们可能是在写脚本的时候,希望把某个命令的输出结果储到数组里,方便后续处理。常见的情况比如列出目录中的文件,或者处理一些文本数据。 接下来,我需要回忆Linux中重定向和数组处理的方法。标准输出重定向通常用>或者>>,但那是到文件。如果要捕获输出变量,可以用命令替换,比如使用$(command)或者反引号。数组的话,在Bash中是用括号来定义,元素用空格分隔。 然后,用户提到的是数组,所以可能需要把命令输出的每一行作为数组的一个元素。这时候,mapfile或者readarray命令可以派上用场,它们可以直接读取输入到数组,每行一个元素。比如,mapfile -t array < <(command),这样command的输出就会储到array数组中。 不过,用户可能对Bash脚本不太熟悉,所以需要给出具体的例子。比如,使用ls命令列出文件,然后储到数组。或者处理带有空格的文件名时,应该设置IFS(内部字段分隔符)为换行,避免出现问题。 另外,可能需要考虑错误处理,比如命令是否有错误输出,是否需要同时捕获标准错误和标准输出。这时候可以重定向2>&1,将标准错误合并到标准输出,一起储到数组。 还要注意,不同的Shell可能有不同的语法,比如Bash和Zsh在数组处理上有些差异,所以需要确认用户使用的是Bash。 最后,总结步骤,给出示例代码,并解释每行的作用,让用户能够逐步理解和应用。同时提醒注意事项,比如命令替换中的分词问题,处理特殊字符的方法,以及错误重定向的必要性。</think>在Linux中,将屏幕输出重定向到数组需要通过Shell脚本实现,以下是具体操作步骤及示例: 1. **基础方法 - 命令替换** ```bash # 将命令输出的每一行数组 output_array=($(ls)) # 示例:将ls命令结果按空格分割数组 ``` 2. **阶方法 - mapfile/readarray(推荐)** ```bash # 使用mapfile按行精确储(Bash 4.0+) mapfile -t output_array < <(ls -l) # -t参数去除换行符 ``` 3. **处理包含空格的输出** ```bash # 安全处理带特殊字符的输出 IFS=$'\n' # 设置仅用换行符分割 output_array=($(find . -type f)) # 查找文
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值