符合 POSIX 标准的 shell 相当于 Bash“while read -d $'\0' ...”?

2024-05-21

我正在尝试使 Bash 脚本严格符合 POSIX 标准,即消除任何潜在的“Bashisms http://mywiki.wooledge.org/Bashism“ 通过使用checkbashisms -px ${script_filename}。在给定的文件中,我使用以下命令遍历目录find然后将每个文件路径通过管道传输到read using \0作为分隔符使用-print0为了能够处理包含换行符的文件名:

find . -print0 | while read -d $'\0' inpath
do
    echo "Reading path \"${inpath}\"."
done

然而,checkbashisms http://manpages.ubuntu.com/manpages/precise/man1/checkbashisms.1.html不喜欢这个,因为选项-d不严格符合 POSIX 标准 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/read.html:

可能在……行中受到攻击n(使用 -r 以外的选项读取)

我如何编写符合 POSIX 标准的等效代码,即读取输出find使用非换行符分隔符?


Without -d选项,read内置无法读取空终止数据。

你可以在以下位置执行此操作find + xargs:

find . -mindepth 1 -print0 | xargs -0 sh -c 'for f; do echo "Reading path \"$f\""; done' _

或者,如果您不介意为每个文件生成一个 shell,请使用find:

find . -mindepth 1 -exec sh -c 'echo "Reading path \"$1\""' - {} \;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

符合 POSIX 标准的 shell 相当于 Bash“while read -d $'\0' ...”? 的相关文章

  • 如何运行 bash 压缩脚本?

    有没有一种方法可以直接运行带有 参数 的压缩bash脚本 而无需将其解压缩到文件中 然后运行解压缩的文件 例如 我需要使用一些给定的参数执行 setup mysql gzip 压缩脚本 n wordpress locahost 而不先解压缩
  • Ruby 在特定目录中运行 shell 命令

    我知道如何在 Ruby 中运行 shell 命令 例如 x cmd 但是 如何指定运行此命令的目录 有没有类似的脱壳方式 类似subprocess Popen在Python中 subprocess Popen r c mytool tool
  • 打印 STDOUT/STDERR 并将它们写入 Bash 中的文件?

    有没有办法让 Bash 将 STDOUT STDERR 重定向到文件 但仍然将它们打印到终端 这会将 STDOUT 和 STDERR 重定向到同一个文件 some command 2 gt 1 tee file log Example to
  • rsync --include 选项不排除其他文件

    尝试rsync某些扩展名 sh 的文件 但下面的bash脚本仍然传输所有文件 为什么 from home xxx rsync zvr include sh from root host home tmp 您需要添加 exclude all
  • 使用搜索词打开 Windows 资源管理器查找窗格

    我正在尝试创建一个应用程序 该应用程序打开 Windows 资源管理器搜索功能并搜索输入了指定术语的文件 文件夹 我已经有了 Windows Vista SP1 使用 Windows 索引服务引入的 search query 命令的代码 这
  • 从文件中随机采样行

    我有一个大约 40gb 和 1800000 行的 csv 文件 我想随机采样 10 000 行并将它们打印到一个新文件中 现在 我的方法是将 sed 用作 sed n vars lt input txt gt output txt Wher
  • Angular 2 - 在(点击)事件中使用管道

    我的问题可能很简单 但只是找不到在事件 例如 单击 中使用管道的方法 像这样的事情
  • LaunchAgent 不运行 shell 脚本

    在 Catalina 之前的 macOS 下 我有一个每天运行 shell 脚本的 LaunchAgent 升级并切换到 zsh 后 它不起作用 我检查过的事情 shebang 切换到 zsh shell脚本可以从命令行手动执行 sh 在系
  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • 在 NodeJS 中运行 Conda 命令

    我无法使用以下命令运行 C onda 命令exec与我的 NodeJS 应用程序 var conda path miniconda3 bin conda var cmd conda path init bash conda path act
  • 如何从 Linux 命令行确定 LCD 显示器是否打开

    如何通过 Linux 命令行判断计算机的显示器是否打开 关闭 我传统上认为显示器是仅输出的设备 但我注意到 Gnome 显示器首选项对话框具有 检测显示器 功能 这可以推广到确定显示器是否物理关闭吗 VESA DDC 连接是I2C http
  • 我们可以在 Bash 脚本中使用 PHP 吗?

    我有一个 bash 脚本abcd sh bin sh for i in seq 8 do ssh w i uptime ps elf grep httpd wc l free m mpstat done pid sleep 1 kill 9
  • 如何并行运行命令列表?

    我有一个包含我要运行的命令行的文件 该文件包含大约 2 000 行 我有 8 个可用核心 是否可以解析文件并启动 8 个进程 然后在其中一个程序完成时从文件中执行另一个进程 我希望这种情况继续下去 直到到达文件末尾 Use GNU并行 ht
  • 如何获取 bash 中从 Ping 接收到的数据包的百分比?

    当 ping 主机时 我希望输出仅显示收到的数据包 已发送 5 个 的百分比 我想我需要使用grep不知怎的 但我不知道如何 我是 bash 编程的新手 这是我所在的地方 ping c 5 q host grep grep 中应该包含什么
  • 在 Bash 中从文本文件创建数组

    脚本采用 URL 解析它的所需字段 并将其输出重定向以保存在文件中 file txt 每次找到字段时 输出都会保存在新行中 file txt A Cat A Dog A Mouse etc 我要拿file txt并在新脚本中从中创建一个数组
  • 如何从源 bash 脚本返回错误

    我对 bash 脚本相当陌生 我有 4 个嵌套的 bash 脚本 并且我无法正确地从第四个脚本传播错误 例如 script1 sh source script2 sh
  • 从sourceforge下载最新版本

    我正在尝试在 bash 脚本中从 Sourceforge 下载最新版本的graphicsmagick wget q https sourceforge net projects graphicsmagick files latest dow
  • 为什么 RHEL 上的 bash 中 `read -t` 没有超时?

    Why read t在 RHEL5 或 RHEL6 上从管道读取时不会超时 这是我的示例 在从管道读取数据时 我的 RHEL 盒子不会超时 tail f logfile log grep something read t 3 variabl
  • rsync :递归同步所有文件,同时忽略目录结构

    我正在尝试创建一个 bash 脚本 用于将音乐从桌面同步到移动设备 桌面是源 有没有办法让rsync递归同步文件但忽略目录结构 如果从桌面删除了文件 我希望它也在设备上删除 我的桌面上的目录结构是这样的 Artist1 Artist1 ar
  • C shell 脚本中是否有短路逻辑运算符?

    我认为 C shell 脚本的行为会像 C 一样 并对逻辑运算符使用短路求值 if e cache find monitor newer cache then endif 但在 if 语句中 即使第一个条件为真 也会检查第二个条件 从而给出

随机推荐

  • CISC 机器 - 它们不只是将复杂指令转换为 RISC 吗?

    也许我在架构上存在误解 但如果机器有 比如说 乘法指令 该指令是否未转换为更小的指令 或者过于复杂以至于最终与等效的 RISC 指令具有相同的速度 乘法是一个不好的例子 它在两种体系结构中都是一条指令 将上面的 乘法 替换为 CISC 中更
  • 这种尺寸对齐是如何工作的

    对于所提供的评论 我无法理解以下代码 这段代码的作用是什么 以及等效的代码是什么8 aligned segment size must be 4 aligned attr gt options ssize 3 Here ssize is o
  • 如何使用cleartool获取UCM流和基线?

    对于构建日志记录 我需要获取当前流 基线cleartool 但我一直在确定哪个命令将为我提供此信息 我怎样才能使cleartool告诉我我当前正在查看哪个流 基线 如果输出需要预处理或过滤也没有问题 如果您在视图中 您可以 获取当前流 cl
  • Django 与谷歌图表

    我试图让谷歌图表显示在我的页面上 但我不知道如何将值从 django 视图传递到 javascript 以便我可以绘制图表 姜戈代码 array Year Sales Expenses 2004 1000 400 2005 1170 460
  • span 和 iframe 正文中的宽度(以像素为单位)

    我需要知道 a 的宽度 nbsp 以像素为单位 以及是否取决于字体大小 另外 页面中不同元素的情况是否有所不同 还有 就是 nbsp 与常规不同 目的 nbsp 不间断空格 位于正常空格之上是为了防止单词之间出现换行 您可以使用多个 nbs
  • 将 Swagger 与命名空间版本的 WebApi 结合使用

    我已经找到了如何使用基于名称空间的 WebAPI 版本这个班 https aspnet codeplex com SourceControl changeset view dd207952fa86 Samples WebApi Namesp
  • 如何跟踪hadoop中哪个数据块在哪个数据节点?

    如果复制一个数据块 会复制到哪个数据节点 是否有任何工具可以显示复制块存在的位置 如果您知道文件名 则可以通过 DFS 浏览器查找 转到您的 namenode Web 界面 说 浏览文件系统 并导航到您感兴趣的文件 在页面底部 将列出文件中
  • 将 char 绑定到枚举类型

    我有一段与此非常相似的代码 class someclass public enum Section START MID END vector section Full void ex for int i 0 i section
  • 接口中“不能降低继承方法的可见性”的含义

    我有两个文件 public interface PrintService void print PrintDetails details class PrintDetails private String printTemplate pub
  • Application.onLowMemory() 未调用

    我创建了自己的应用程序类 我尝试调试它 代码在 Application onCreate 处停止 但不会在 onLowMemory 处停止 为了测试该场景 我打开了许多其他高内存应用程序 我看到的是调试会话终止 在 Eclipse 中 并且
  • MVVM 消息传递或事件或其他什么选项?

    我在 MainViewModel 中有一个菜单 现在在选择特定的菜单项时我想更新已加载的视图的数据 即 虽然 MainViewModel 中有该 viewModel 的实例 但当我尝试通过该实例调用该方法并更改数据属性时 它不会显示视图中的
  • 我可以使用特征中的方法重写 scala 类方法吗?

    class PasswordCaseClass val password String trait PasswordTrait self PasswordCaseClass gt override def password blue val
  • 通过向上转换将 Java.sql.date 转换为 Java.util.date 安全吗?

    java sql date 扩展了 java util date 那么通过将 java sql date 转换为 java util date 是否可以在两者之间进行转换 或者有其他方法可以转换它们吗 您不一定需要强制转换 您可以将 SQL
  • 如何修复超出最大调用堆栈大小

    有一个 MERN Firebase 应用程序并收到此错误和一堆 atdeepExtend deepCopy ts 71 RangeError Maximum call stack size exceeded getApps as apps
  • pytesseract 无法从图像中识别复杂的数学公式

    我在用pytesseractpython 中的模块 pytesseract从图像中识别文本 但它不适用于包含复杂数学公式 例如根 推导 积分数学问题或方程 的图像 代码2 py Import modules from PIL import
  • 运行测试项目时自动启动ASP.MVC项目

    我正在尝试为我的 ASP 网站设置一个测试项目 对于某些测试 我想使用 selenium 来执行端到端测试 因此 我的网站必须运行 以便测试可以访问该网站 运行测试时如何启动我的网站项目 请参考以下链接 我相信这是可能的 但会有点棘手 这些
  • AES 密钥是随机的吗?

    AES 密钥可以通过此代码生成 KeyGenerator kgen KeyGenerator getInstance AES kgen init 128 but 如果我有一个 非常可靠 的生成随机数的方法 我可以这样使用它吗 SecureR
  • 如何绘制 Voronoi 曲面细分的多边形而不是线段?

    我找到了一种使用 ggplot2 绘制 Voronoi 曲面细分的分段的方法 library deldir library ggplot2 library ggthemes set seed 123 df lt data frame lat
  • 无法将共享项目添加到 Visual Studio 测试项目

    我正在使用 Visual Studio 2015 我有一个作为独立解决方案的共享项目 其他几个解决方案中使用的扩展的集合 我想测试共享项目 独立于任何其他解决方案 因此 我添加了一个新的测试项目 但是 在我的测试项目中 我无法添加对共享项目
  • 符合 POSIX 标准的 shell 相当于 Bash“while read -d $'\0' ...”?

    我正在尝试使 Bash 脚本严格符合 POSIX 标准 即消除任何潜在的 Bashisms http mywiki wooledge org Bashism 通过使用checkbashisms px script filename 在给定的