为什么这个 BASH 数组没有构建?

2023-11-30

为什么这个 bash 数组没有填充?我相信我过去也这样做过。回声${#XECOMMAND[@]}显示无数据..

DIR=$1
TEMPFILE=/tmp/dir.tmp

ls -l $DIR | tail -n +2 |  sed 's/\s\+/ /g' | cut -d" " -f5,9 > $TEMPFILE


i=0
cat $TEMPFILE | while read line ;do

    if [[ $(echo $line | cut -d" " -f1) == 0 ]]; then

        XECOMMAND[$i]="$(echo "$line" | cut -d" " -f2)"
        (( i++ ))   
    fi

done

当你像这样运行 while 循环时

somecommand | while read ...

然后 while 循环在子 shell 中执行,即与主脚本不同的过程。因此,循环中发生的所有变量赋值都不会反​​映在主进程中。解决方法是使用输入重定向和/或命令替换,以便循环在当前进程中执行。例如,如果您想从文件中读取内容

while read ....
do
    # do stuff
done < "$filename"

或者如果你不想要一个过程的输出,你可以这样做

while read ....
do
    # do stuff
done < <(some command)

最后,在bash 4.2及以上版本中,您可以设置shopt -s lastpipe,这会导致管道中的最后一个命令在当前进程中执行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么这个 BASH 数组没有构建? 的相关文章

  • Python3 http.server:将日志保存到文件中

    我使用Python3 6编写了一个简单的HTTP服务器来重定向所有请求 我写的文件可以找到here https github com kmahyyg learn py3 blob master antiscanhttp py 我可以在 Ub
  • 如何剪切(1) 个驼峰字?

    Bash 中有没有一种简单的方法可以将驼峰式单词拆分为其组成词 例如 我想将 aCertainCamelCasedWord 拆分为 a certain Camel Cased Word 并能够选择我感兴趣的那些字段 当单词分隔符是下划线时
  • 此 bash 命令在 Makefile 中未正确运行

    在 Makefile 里面我有这样的 release version poetry version cut f2 d echo release version 如果我运行 我的终端中的语句将毫无问题地运行 gt version poetry
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • 目录 * 和文件顺序

    我需要将目录中的所有文件连接到一个文件 但具有指定名称的文件必须位于输出的顶部 只是在做cat gt result将按字母顺序连接所有文件 有什么办法告诉猫放置文件vars css或任何其他输出的开头 现在我只是重命名文件需要首先000 f
  • Bash 脚本大小限制?

    我有一个 bash 脚本 在 RHEL 或 OS X 上运行时出现以下错误 第 62484 行 意外标记 换行符 附近出现语法错误 第 62484 行 o gz 这是一个自动生成的脚本 用于解决我公司使用的 Grid Engine 计算集群
  • 如何使用 bash 显示具有两个子文件夹的文件夹?

    我通过 Cygwin 使用 bash 我有一个大文件夹 a 有很多子文件夹 b 这些子文件夹各有一个或两个子文件夹 c 我想找到所有有两个子文件夹 c 的子文件夹 b 并输出它们 结构如下 a b1 c1 b2 c1 c2 b3 c1 c2
  • 为什么我不能将 sed 的输出重定向到文件

    我正在尝试运行以下命令 someprogram tee dev tty sed s 2 gt output file 但当我去查看时 该文件始终是空白的 如果我删除 gt output file从命令末尾 我可以看到 sed 的输出 没有任
  • Godaddy 托管上的 CakePHP 控制台

    我一直在努力让我的 CakePHP 网站在 Godaddy 网格托管 帐户上运行 我的蛋糕应用程序设置是从帐户的子目录托管的 并且可以通过子域访问 我必须调整我的 htaccess 文件才能使其正常工作 现在我需要让 CakePHP 控制台
  • 使用正确的头打印文件名

    我想获取当前目录中的文件名 使得文件的第一行等于myWord 我想结合find type f命令与 exec选项与head 1 filename但无济于事 有没有一些聪明的 单行的解决方案来解决这个问题 您可以使用find with awk
  • 使用 grep 查找包含所有搜索字符串的行

    我有一个文件 其中包含很多与此类似的行 id 2796 some model Profile message type MODEL SAVE fields account 14 address null modification times
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • grep 两个分隔符之间的子字符串

    我有很多bash使用的脚本perl内的表达式grep为了提取两个分隔符之间的子字符串 例子 echo BeginMiddleEnd grep oP lt Begin End 问题是 当我将这些脚本移植到运行的平台时busybox 融合的 g
  • bash 行长度限制从何而来?

    在运行 Bash 4 4 19 标准安装 的 Solaris 11 上 输入行似乎有 256 个字符的限制 我想了解这个限制从何而来 我浏览了手册页 但没有找到任何解决此问题的内容 仅当未使用 readline 库时才会发生这种情况 在下面
  • 迭代 bash 脚本中的变量名称

    我需要在一堆文件上运行一个脚本 这些文件的路径被分配给train1 train2 train20 我想 为什么不使用 bash 脚本使其自动执行呢 所以我做了类似的事情 train1 path to first file train2 pa
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • Git difftool 未启动外部 DiffMerge 程序

    我一直遵循 戴夫的博客条目 http www davesquared net 2009 05 setting up git difftool on windows html 链接在此answer https stackoverflow co
  • 如何在shell中输出返回码?

    我正在尝试通过调用自定义 shell 脚本sh bin sh c myscript sh gt log txt 2 gt 1 echo 该命令的输出是创建的后台进程的 PID 我想指导 bin sh保存返回码myscript sh到某个文件
  • 在bash脚本中分割字符串[重复]

    这个问题在这里已经有答案了 我想分割一个字符串并需要其中的一些参数 USER dn uid dfl3030 cn users cn accounts dc tenant dc ycs dc io cn Reb Lena Schmidt kr

随机推荐

  • 使按钮在玩家死亡后出现 - Unity3D 4.6 GUI C#

    我该如何做到一旦玩家死亡就会出现一个按钮 我已经对重启级别进行了编码 并且屏幕上有使用该代码的按钮 我怎样才能让按钮不显示并且在玩家死亡之前不起作用 回应如下 public GameObject RESTART BUTTON bool is
  • iphone:将uiimage放在tableview部分标题中,拉伸问题

    嘿人们 我将 UIImage 放入 UITableVIew 的节标题中 因此我使用了在互联网上找到的一些代码 UIView tableView UITableView tableView viewForHeaderInSection NSI
  • Django - Timeuntil 标签输出缩写

    我正在使用 django timeuntil 模板标记 输出类似于8 hours 15 minutes 有谁知道我如何才能使输出像8 Hr 15 Min 看看timessince 来自 django 源代码 chunks 60 60 24
  • 添加文档时 MongoDB 游标是否“自动增长”

    我正在使用 MongoDB 游标来查找大量文档 这需要相当长的时间 如果在此期间 数据库中添加了与光标的搜索条件相匹配的文档 会发生什么情况 光标会返回文档吗 或者游标在开始时是否会拍摄某种快照 从而忽略后来添加的结果 光标会返回文档吗 是
  • 如何通过缩放视野来始终保持 2 个物体在视野中​​? (或 z&y 轴)

    我正在为 2 名玩家制作一个小型街机射击游戏 并且需要将屏幕聚焦于 2 名玩家 我让相机在 X 轴的玩家中心移动 但我认为当 2 名玩家玩家之间的距离越来越近 镜头也越来越近 This is the perspective pov 移动相机
  • 如何部署 Outlook 宏?

    我做了一个 Outlook 宏 我如何部署它以在其他机器上使用它 我是否遵循在我的机器上执行的相同步骤 工具 gt 宏 gt 创建新项目 还是有其他方法可以像我们处理 vb 或 C 项目一样进行部署 不 您不需要遵循相同的步骤并从头开始重新
  • 获取 data.frame 中各组的平均值和标准差

    我的心率数据以列表的形式存在 其中有四个类别 1AS 1CS 1AI 1CI 每个类别的大小各不相同 我想输出列表中每个类别的平均值和标准差 我有这种格式的数据来计算方差分析和图基 我已经成功完成了 但平均值让我难住了 Group HR 1
  • while循环和线程的无限循环问题[重复]

    这个问题在这里已经有答案了 使用一个基本示例来说明我的问题 我有 2 段几乎相同的代码 这段代码会导致while循环无限运行 private boolean loadAsset new Thread new Runnable Overrid
  • Oracle 序列:此处不允许使用 CURRVAL?

    以下 Oracle SQL 代码生成错误 ORA 02287 此处不允许序列号 INSERT INTO Customer CustomerID Name VALUES Customer Seq nextval AAA SELECT FROM
  • array() 无法识别列名参数

    在 R 中 我使用dplyr更具体地说arrange 不知何故arrange功能未按预期工作 在下面的示例中 我首先存储列的名称 然后将此变量作为参数传递给名为 my function 的自定义函数 target column mean a
  • Facebook SDK 共享始终返回 sharerDidCancel [重复]

    这个问题在这里已经有答案了 我尝试使用 Facebook SDK 分享帖子 但无论是分享还是取消帖子 总是会调用 sharerDidCancel 这是我的代码 void shareFacebook FBSDKShareLinkContent
  • 在多个浏览器中测试/检查网络应用程序的软件/工具?

    我正在创建一个网站 我想使用自动化测试工具自动检查多个浏览器以进行浏览器兼容性测试 你们知道是否有任何软件 工具 我可以只提供一个链接 然后在多个浏览器中加载页面 我用过浏览器截图之前 如果你不介意等一两个小时也没关系 我还建议您查看一些链
  • 内部类出现“范围内没有类型 file1 的封闭实例”错误

    我有一些代码 本质上它导入了另一个类 它有一个我试图访问的内部类 但它提出了这个错误 file2 java 5 error no enclosing instance of type file1 is in scope public sta
  • 使用 Java 访问 Android Manifest 属性

    这是清单示例 是否可以从 Java 访问属性 versionCode 和 versionName 如何
  • 写入有符号整数就像在 C++ 中写入无符号整数一样

    Is reinterpret cast这样做是安全的 这是最好的方法吗 例如 在下面的代码中 我有一个名为ibytestream 这允许读取uint16 ts and int16 t是从它 ibytestream next is a vec
  • 如何使用纯 javascript 将子级附加到具有指定类名的所有节点

    var menuheader document createElement li document getElementsByClassName subMenu appendChild menuheader 上面是代码片段 我收到此错误 f
  • NetBeans 12.6 的 TAB 和缩进问题

    交易是这样的 如果我在一行代码中使用 TAB 键 效果很好 我按下它 它会正常插入空格 如果我转到一个新行 一个没有代码的空行 它就不起作用 无论 像这样 System out pri nt 这是第一个问题 第 2 号 缩进 如果我在任意位
  • 在 jquery datetimepicker 中设置最大和最小日期时间

    我正在使用jquery datetimepicker 我想在其中设置mindate和时间 这是在第二个datetimepicker中选择的值 我尝试的是 date start datetimepicker autoSize true cha
  • 在运行时检查 Python 模块版本

    许多第三方 Python 模块都有一个属性 用于保存模块的版本信息 通常类似于module VERSION or module version 但有些则不然 此类模块的具体示例是 libxslt 和 libxml2 我需要检查运行时是否使用
  • 为什么这个 BASH 数组没有构建?

    为什么这个 bash 数组没有填充 我相信我过去也这样做过 回声 XECOMMAND 显示无数据 DIR 1 TEMPFILE tmp dir tmp ls l DIR tail n 2 sed s s g cut d f5 9 gt TE