带空格的 Shell 变量,引用单个命令行选项

2024-01-01

Autoconf 脚本在处​​理带有空格的文件名或路径名时遇到问题。例如,

./configure CPPFLAGS="-I\"/path with space\""

结果(config.log):

configure:3012: gcc  -I"/path with space"  conftest.c  >&5
gcc: with: No such file or directory
gcc: space": No such file or directory

./configure 中的编译命令是ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'我无法修改它(我也许可以,但以这种方式解决 autoconf 并不是一个通用的解决方案)。

我认为这归结为获取一个包含空格的 shell 变量,将其解析为单个命令行变量,而不是在空格处拆分。我能想到的最简单的 shell 示例是创建一个带有空格的文件并尝试列出ls以 shell 变量作为参数ls:

$ touch "a b"
$ file="a b"
$ ls $file
ls: a: No such file or directory
ls: b: No such file or directory

这可行,但非法,因为在 autoconf 中我无法修改 shell 代码:

$ ls "$file"
a b

以下引用事物的尝试均无效:

$ file="\"a \"b"; ls $file
ls: "a: No such file or directory
ls: b": No such file or directory
$ file="a\ b"
$ file="a\\ b"
$ file="`echo \\"a b\\"`"

等等。

这不可能在 shell 脚本中完成吗?是否有一个神奇的引用可以将带有空格的 shell 变量扩展为单个命令行参数?


您应该尝试设置$IFS环境变量。

来自 man bash(1):

IFS - 用于分词的内部字段分隔符 扩展后并使用 read 内置函数将行分割成单词 命令。默认值为“空格制表符换行符”。

例如

IFS=<C-v C-m>  # newline
file="a b"
touch $file
ls $file

别忘了设置$IFS回来或者会发生奇怪的事情。

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

带空格的 Shell 变量,引用单个命令行选项 的相关文章

  • 如何使用shell脚本从json字符串中grep特定字段值[重复]

    这个问题在这里已经有答案了 下面是文件中可用的 JSON 字符串 我需要从中提取值status在 shell 脚本中 预期输出 status success 响应 json eventDate null dateProccessed nul
  • 对目录中的所有文件执行命令

    有人可以提供执行以下操作的代码 假设有一个文件目录 所有这些文件都需要通过程序运行 该程序将结果输出到标准输出 我需要一个脚本 该脚本将进入一个目录 对每个文件执行命令 并将输出连接到一个大输出文件中 例如 要在 1 个文件上运行命令 cm
  • 使用 find 命令搜索直到第一个匹配项

    我只需要搜索可以在任何地方的特定目录有没有办法运行此命令直到第一个匹配 谢谢 我现在使用 find noleaf name experiment type d wc l 正如鲁道夫 米尔鲍尔 Rudolf M hlbauer 所提到的 qu
  • 如何从 Artifactory 存储库下载最新的工件?

    我需要来自存储库的最新工件 例如快照 人工工厂 http en wikipedia org wiki Software repository Repository managers 该工件需要通过脚本复制到服务器 Linux 我有什么选择
  • 动态参数值取决于另一个动态参数值

    启动前提 非常严格的环境 Windows 7 SP1 Powershell 3 0 使用外部库的可能性有限或不可能 我正在尝试重写之前创建的 bash 工具 这次使用 PowerShell 在 bash 中 我实现了自动完成功能 以使该工具
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • 从 UNIX 命令行向串行端口发送字节?

    我想使用命令行将字节流发送到串行端口 这可能吗 我的串口位于 dev cu usbserial A700dYoR在我的 Mac 上 例如 如果我想将整数 50 或字符串 data 发送到该串行端口 我该怎么做 我对 UNIX 的了解非常有限
  • 使用 su 和 Expect 脚本登录用户时遇到问题

    我正在为一个班级制作一个网站 您可以使用用户名和密码登录 然后它会将您带到一个显示您在班级中的成绩的页面 该网站正在运行bash脚本 https github com jduga002 rapache 并将托管在用户已有用户名和密码登录的计
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • BASH:将数据从平面文件导入模板

    我有一个平面记录文件 每行有 33 行 我需要将此文件格式化为模板中的规格 模板为 DOS 格式 源文件为 NIX 格式 该模板具有必须遵守的特定缩进和间距 我想到了几个选择 BASH 与经典的 nix 工具 sed awk grep 等
  • 如何在 PHP 中运行 shell 脚本?

    我正在尝试使用 PHP 触发 shell 脚本的运行 本质上 当用户在我们用 PHP 编写的网站上完成一个操作时 我们希望触发一个 shell 脚本 该脚本本身调用一个 Java 文件 提前致谢 See shell exec http ph
  • Bash 脚本:自动为 mpeg-dash 进行 ffmpeg 编码

    我正在编写一个 bash 文件来创建视频编码和串联 以供 dash 实时流媒体使用 基本上 它读取输入视频文件夹 将所有视频编码为三种分辨率格式 然后将它们连接起来创建三个适应集 DIAGRAM 该脚本检查 fps 一致性 如果输入不是 1
  • 在退出脚本之前等待后台进程完成

    在退出脚本 TCL Bash 之前 如何确保所有后台进程已完成执行 我正在考虑将所有后台进程 pid 写入 pid 文件 然后最后 pgrep pidfile 以查看在退出之前是否有任何进程仍在运行 有一些更简单的方法可以做到这一点吗 TC
  • 如何在 OS X 上查看 $PATH 变量的当前值?

    PATH returns bash usr local share npm bin Library Frameworks Python framework Versions 2 7 bin usr local bin usr local s
  • 在 C# 中读取/写入命令行程序

    我正在尝试与 C 的命令行程序进行对话 它是一个情绪分析器 它的工作原理如下 CMD gt java jar analyser jar gt Starting analyser 这是我想从我的 C 程序插入内容的地方 例如 I love y
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array
  • 如何使用 sed 将空格替换为 \(space)?

    当我使用 sed 将所有空格替换为 X 时 该命令有效 命令为 sed s X g filelist tmp 但是 当我尝试用 space 替换所有出现的空格时 代码是 sed s g filelist tmp 这不起作用 我究竟做错了什么
  • awk 的 printf 插入多个变量的正确语法是什么?

    我复制了一些使用 printf 输出字符串在文件中出现的频率的代码 awk BEGIN print The number of times a appears in the file a a counter 1 END printf s n
  • 每个命令都返回“bash:<命令>:找不到命令...”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我刚刚安装了 Scala 并添加了路径gedit bashrc export SCALA HOME home avijit sca
  • 每当 SQLERROR 永远不起作用时

    我不知道可能是什么原因 我已经在网上花了几个小时试图找出我的情况出了什么问题 我查过官方文档 https docs oracle com cd B19306 01 server 102 b14357 ch12052 htm还有一些汤姆 凯特

随机推荐

  • 如何使用另一个模块的反应式数据帧更新闪亮模块

    该模块的目标是创建一个根据数据选择器模块的输出而变化的反应性条形图 不幸的是 条形图没有更新 它停留在选定的第一个变量上 我尝试创建观察者函数来更新条形图 但无济于事 我还尝试将选择器服务器模块嵌套在 barplot 模块中 但出现错误 警
  • 装配性能调整

    我正在编写一个编译器 更多的是为了好玩 但我想尝试使其尽可能高效 例如 我被告知在英特尔架构上使用除EAX执行数学运算会产生成本 大概是因为它交换为EAX进行实际的数学计算 这里至少有一个来源说明了这种可能性 http www swanso
  • MediaTek 处理器上的双精度值计算错误

    我发现我在市场上发布的一款应用程序在某些手机上产生了奇怪的结果 经过调查发现 一个计算两个地理点之间距离的函数存在问题 有时它会返回完全错误的值 此问题仅在具有以下功能的设备上重现联发科MT6589 http www mediatek co
  • localstorage - 保存数组[重复]

    这个问题在这里已经有答案了 我有本地存储 可以保存输入并将它们推送到列表中 现在我想将列表保存在本地存储中 因为当我重新加载列表时 列表会重置var fav new Array 在此开头定义jsFiddle http jsfiddle ne
  • 如何在 java 中解组 ruby​​ 对象?

    我有一个对象 我想用java获取它的内容 唯一的问题是目前在 ruby 中 irb main 050 0 gt blah gt BAh7ByIeYXV0aGVudGljYXRpb25fc3RyYXRlZ2llczAiCXVzZXJpBg 2
  • AVAudioEngine 在 iOS14 中获取 inputNode 属性崩溃

    这是一个启动audioEngine的函数 void startAudioEngine NSError error nil if self audioEngine isRunning self audioEngine AVAudioEngin
  • Python 装饰器有哪些常见用途? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 虽然我喜欢将自己视为一名相当有能力的 Python 程序员 但我从未理解过的语言的一个方面是装饰器 我知道它们是什么 表面上 我读过 St
  • 如何使用 Sublime Text 3 配置 MinGW?

    我最近安装了 MinGW 并且一直试图让它与 Sublime Text 3 一起使用 以便在编译脚本时打开 cmd 但是没有任何效果 当我去工具 gt 构建系统 gt 新构建系统并保存此脚本 我不断收到错误 C 不被识别为内部或外部命令 可
  • C 中数组索引减去字符意味着什么?

    include
  • 将多个控件放入更新面板的正确方法是什么?

    我有一份注册表单 其中包含 3 到 4 个下拉控件和 2 个日期选择器 现在当选择下拉控件值时 触发 selectedindex 更改 那么我不希望我的页面回发 我已经使用更新面板来停止这种帖子行为 如下所示
  • Spray.io:何时(不)使用非阻塞路由处理?

    如果我们正在考虑生产级 REST API 我们是否应该尽可能使用非阻塞 例如 def insertDbAsync rows RowList Future Unit val route path database insertRowList
  • 在并发环境中处理 max(ID)

    我是 Web 应用程序编程和使用 SQL Server 等 RDBMS 处理并发的新手 我正在使用 SQL Server 2005 Express 版 我正在生成员工代码 其中最后四位数字来自此查询 SELECT max ID FROM e
  • Node.js - Mongoose - 检查集合是否存在

    我需要使用 mongoose 插入一些数据 但集合的名称是由用户在插入时提供的 所以我首先必须检查集合是否存在 我知道如何检查集合是否存在的方法是查询system namespaces收藏 我可以看到 3 种可能的方法来做到这一点 寻找查询
  • 实体框架代码首先创建“鉴别器”列

    我正在使用 EF CF 方法创建一个带有 MySQL 的网站 由于某种原因 EF 在我的 Post 表中创建了一个名为 Discriminator 的列 并包含 VARCHAR Post 为什么要创建这个专栏 我可以做些什么来避免它被创建吗
  • 提交按钮变灰

    我的表单上有一个非常重要的提交按钮 我不希望用户多次点击它 有没有办法让它不可点击或在点击后变灰 也许是点击事件 我的简单代码如下
  • 如何在 SQL 中对连续值进行分组

    我在 SQL Server 2014 中有一个表 其中的示例数据如下 WK NUM NET SPRD LCL 10 0 11 1500 12 3600 13 3800 14 4000 我正在尝试在工作中编写一个奖金结构 我需要在 WK NU
  • 如何在 IDLE 中删除多行制表符缩进?

    如果您想在 Python IDLE 中缩进多行 只需标记这些行并按 Tab 键即可 但是 如果您想删除多行中的缩进怎么办 Shift Tab 在 IDLE 中不起作用 如果您使用 IDLE 则可以使用Ctrl 缩进和Ctrl 取消缩进
  • 在 Perl 中,如何检查给定函数是从哪个模块导入的?

    我有一个调用该函数的代码 但我不知道这个函数属于哪个模块 我需要它来修改这个功能 我怎样才能检查它 The Devel Peek http search cpan org perldoc Devel Peek模块可以非常方便地获取有关变量的
  • 我可以使用 SQL 将存储为 CSV(逗号分隔值)的表列的内容拆分为新表中的各个行吗?

    我看到有几个相关的问题和答案 但不完全是我需要的 所以我会问一个新问题 我有一个包含数千行商店库存数据的 CSV 文件 我想将其导入 MS SQL Server 数据库并使用 SQL 来处理它们 导入 CSV 文件后 SQL 表将具有包含
  • 带空格的 Shell 变量,引用单个命令行选项

    Autoconf 脚本在处 理带有空格的文件名或路径名时遇到问题 例如 configure CPPFLAGS I path with space 结果 config log configure 3012 gcc I path with sp