当前位置: 首页 > news >正文

Shell打印命令返回的数组只显示第一个元素

Shell打印命令返回的数组





有时候,我们需要获取Shell命令返回的数组以进行遍历,但如果使用不当,获取到的数组将只有第一个元素,这将导致很多数据丢失,以至结果错误

1、问题提出

假设,当前tmp/目录结构如下:

tmp/
    bak/
    py/
    sh/

例如,在当前tmp/目录下执行:

arr=($(ls)); echo $arr
arr=($(ls)); echo "$arr"

上述命令的输出结果为bak,此时将丢失pysh

再例如,在当前tmp/目录下执行:

arr=(`find ./ -maxdepth 1 -type d`); echo $arr
arr=(`find ./ -maxdepth 1 -type d`); echo "$arr"

上述命令的输出结果为./,此时将丢失./sh./py./bak

这都会导致结果错误

2、问题解决

解决的办法也很简单,只需要给返回数组的命令添加双引号即可。例如

arr=("$(ls)"); echo $arr

该命令的输出结果为:

bak py sh

请注意,以下命令的输出结果将按行显示:

arr=("$(ls)"); echo "$arr"
bak
py
sh

同样的,上面find命令也需要添加双引号:

arr=("`find ./ -maxdepth 1 -type d`"); echo $arr

输出结果为:

./ ./sh ./py ./bak

同理,以下命令的输出结果将按行显示:

arr=("`find ./ -maxdepth 1 -type d`"); echo "$arr"
./
./sh
./py
./bak

相关文章:

  • 云豹录屏大师:多功能免费录屏工具
  • Maven 的安装与配置(IDEA)
  • 本地Docker部署开源Web相册图库Piwigo与在线远程访问实战方案
  • TypeScript入门
  • MySQL安装实战分享
  • LINUX基础 [二] - Linux常见指令
  • Unity协程从入门到精通:告别卡顿,用Coroutine优雅处理异步与时序任务 (Day 27)
  • Compose笔记(十六)--ExoPlayer
  • 一、绪论(Introduction of Artificial Intelligence)
  • 多模态大语言模型arxiv论文略读(十五)
  • 【技术派部署篇】Windows本地部署技术派
  • 果篮问题 Python
  • 【论文阅读】RMA: Rapid Motor Adaptation for Legged Robots
  • 最近在工作中感受到了设计模式的重要性
  • SDC命令详解:使用相对路径访问设计对象(current_instance命令)
  • OpenFlow v1.1+流表匹配流程解析
  • DeepSeek私有化部署性能怎么样?企业级AI落地实战解析!
  • vue+leaflet 区域划分_反向遮罩层
  • 深入解析 QuickAPI 三大核心能力:SQL 编辑器、数据 API、数据市场
  • 自然语言处理、计算机视觉与语音处理-AI学习Day3
  • 企业网站服务器建设/百度网址大全
  • 德州疫情最新消息今天/seo查询官方网站
  • 南昌 网站建设/市场营销教材电子版
  • 网站主页设计欣赏/广告优化师
  • 厦门免费网站建设/济南seo优化
  • 企业网络推广情况介绍/抖音搜索seo代理