下划线变量后跟范围在 bash 中意味着什么:$_{0..10}

2024-01-03

根据tldp.org http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_02.html,bash下划线变量是:

下划线变量在 shell 启动时设置,包含参数列表中传递的正在执行的 shell 或脚本的绝对文件名。随后,它在扩展后扩展为上一个命令的最后一个参数。它还设置为执行的每个命令的完整路径名,并放置在导出到该命令的环境中。检查邮件时,该参数保存邮件文件的名称。


But this https://stackoverflow.com/a/54052107/1024839回答如何在 Bash 中重复一个字符?它的用法很奇怪:

# exactly the same as perl -E 'say "=" x 100'.
echo -e ''$_{1..100}'\b='

使用这个变量我无法从它的语义中得到任何东西,所以问题是

  • 一根绳子。
  • 其次是$_.
  • 其次是范围的扩大。
  • 后面跟着另一个字符串

bash 中的意思?

Sample:

$ echo $_{0..10}         ; echo $_{0..10} | wc

      1       0       1


$ echo ''$_{0..10}''     ; echo ''$_{0..10}'' | wc

      1       0      11


$ echo ''$_{0..10}'x'    ; echo ''$_{0..10}'x' | wc
x x x x x x x x x x x
      1      11      22


$ echo 'x'$_{0..10}''    ; echo 'x'$_{0..10}'' | wc
x x x x x x x x x x x
      1      11      22


$ echo 'ab'$_{0..10}'cd' ; echo 'ab'$_{0..10}'cd' | wc
abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd
      1      11      55

echo $_{0..10}

大括号扩展为:

echo $_0 $_1 $_2 $_3 $_4 $_5 $_6 $_7 $_8 $_9 $_10

它打印 11 个名称奇怪的变量的值,这些变量名为_0, _1, _2, 等等。它们尚未设置 - 这就是为什么您看不到任何内容 - 但如果它们已设置,您会:

$ _0=zero _1=one _2=two _3=three _4=four _5=five _6=six _7=seven _8=eight _9=nine _10=ten
$ echo $_{0..10}
zero one two three four five six seven eight nine ten

$ echo ''$_{0..10}'x'

同样的事情,但现在有一个x在每个变量名称之后。它不是变量名称的一部分。这是一个单独的字面字符x,就像你写的:

echo ${_0}x ${_1}x ${_2}x ${_3}x ${_4}x ${_5}x ${_6}x ${_7}x ${_8}x ${_9}x ${_10}x

现在变量有值时的输出是:

$ _0=zero _1=one _2=two _3=three _4=four _5=five _6=six _7=seven _8=eight _9=nine _10=ten
$ echo ''$_{0..10}'x'
zerox onex twox threex fourx fivex sixx sevenx eightx ninex tenx

这应该足以理解您问题中的其他示例。

它还表明,链接答案 https://stackoverflow.com/questions/5349718/how-can-i-repeat-a-character-in-bash/54052107#54052107是重复字符串的糟糕方法。它依赖于未设置的这些变量。不建议。

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

下划线变量后跟范围在 bash 中意味着什么:$_{0..10} 的相关文章

随机推荐

  • HotSpot 可以内联 lambda 函数调用吗?

    考虑代码 someList forEach x gt System out format element s x 理论上 应该可以内联此代码并通过首先内联来消除间接函数调用forEach方法 然后在 inlined 中内联 lambda 函
  • 文件阅读器 - 再次上传相同的文件不起作用

    我有一些类似绘图的应用程序 用户可以保存项目然后加载它们 当我第一次加载一个文件 例如project1 leds 时 在应用程序中进行一些更改但没有保存它 然后再次加载相同的文件 project1 leds 什么也没有发生 我无法多次加载同
  • 自定义排序 Python 字典

    所以我有一本打印时看起来像这样的字典 10 10 ZT21 14 WX21 12 2 15 5 3 UM 25 我想以我定义的自定义方式对它们进行排序 假设我希望它的排序方式 按键 是ZT21 10 WX21 UM 5 2 有人知道如何以预
  • 到达时间时计时器开始活动

    我希望在达到新活动时开始新活动 到目前为止我遇到了一些麻烦 这就是我到目前为止所拥有的 我希望你们明白我想做什么 如果有更简单有效的方法请告诉我 也许我应该把它放在一个线程中 Chrono Chronometer findViewById
  • 为什么我的 Eclipse 项目有虚拟调试器断点?

    我有一个小项目 当在 Eclipse 调试器中运行时 它似乎总是停在 FileInputStream class 第 106 行 文件被打开 没有设置断点 但 Eclipse 的行为就像我在这里设置了断点一样 如果我清除所有断点 它仍然会发
  • 我应该将 master 合并到功能分支中以使其更新吗?这会被视为不好的做法吗?

    我有这样的情况 master A B E F C D feature x 如果我需要将关键修复 E 和 F 合并到 feature x 分支中以继续开发并且我打算合并回 master 我是否应该将 master 合并到 feature x
  • 如何使用 ALAssetsLibrary 只获取视频

    我正在尝试通过以下代码从照片库中获取视频 但我也获取图像列表 如何获取所有视频的列表 我究竟做错了什么 NSMutableArray assetURLDictionaries NSMutableArray alloc init xy NSM
  • 打印机目的地问题

    我成功地使用 PrintWriter 将字符串写入文本文件 并且默认情况下输出文本文件被写入我正在处理的 Eclipse 项目的目录中 但我的 Eclipse 项目有一个名为 Resources 的特定文件夹 我希望将文本文件写入其中 我的
  • 如何设置 Superset 配置进行缓存

    目前 我出于工作目的正在从事 Airbnb Superset 项目 我知道 Superset 支持缓存 通过 Flask Cache 但是当我设置配置时我遇到了困难 我的 config py 文件如下所示 CACHE DEFAULT TIM
  • 在 AngularJS ngRepeat 中动画 ng-move 动画错误的项目

    当谈到在 ng repeat 中动画 ng move 时 我有点困惑 例如 如果我将数组项目从 3 移动到 7 则项目 4 7 会向上移动并且它们会产生动画 然而 我从 3 移到位置 7 的实际项目却没有 这是一个展示我的问题的 plunk
  • 线程内的消息循环

    如何使用 OTL 在线程内实现消息循环 应用程序 ProcessMessages 是我到目前为止所使用的 但使用起来不太安全 Thanks 这是我从线程队列中提取消息的方法 while GetMessage Msg 0 0 0 and no
  • Github 解决冲突总是将基础分支合并到我当前的分支

    我在 PHP Storm 的本地分支机构工作 任务完成后 我提交我的分支并推送到 git 在 Github 页面上 我创建了一个 Pull 请求 DEV 到目前为止这还可以 但如果某些文件存在冲突 根据这篇文章https docs gith
  • 加载 Keras 模型并用它进行预测

    我制作了一个用于假新闻检测的 Keras NN 模型 我得到了 89 1 的验证准确度 我使用 50 000 个样本进行训练 使用 10000 个样本进行测试 使用 2000 个样本进行验证 我已经保存了该模型 现在我想加载该模型 加载我想
  • 链表与向量

    在过去的几天里 我一直在为软件开发工作的第一次电话面试做准备 在研究我提出的问题时本文 http www codinghorror com blog 2008 01 getting the interview phone screen ri
  • getsockopt 返回与 setsockopt 中设置的不同的 IP_TOS 值

    我正在尝试使用setsockopt to set IPTOS价值IPTOS THROUGHPUT The setsockopt回电0 但是 那getsockopt显示了IP TOS值设置为1 这不同于IPTOS THROUGHPUT 0x8
  • 崩溃。项目开发处于非活动状态

    当我尝试上传新风味版本时 出现错误 警告 Crashlytics 上传发行版时出现问题 项目开发处于非活动状态 我该如何修复它并添加新的flavor用于测试 来自 Stackoverflow 上另一位用户的回复 https stackove
  • Angular js 中的 Twitter 引导日期选择器

    我正在使用 twitter bootstrap Angular js 和 Taffy DB 构建一个应用程序 javascript function datepicker datepicker scope submit function c
  • 在 Delphi 中调整 png 图像大小 - 不正确的 alpha 通道

    我正在调整可能有 Alpha 通道的 png 图像的大小 一切正常 但有一个例外 我在透明区域周围得到一些灰色像素 原始图像没有任何阴影 有没有办法解决这个问题 解决它 我正在使用 Gustavo Daud 的 SmoothResize 请
  • Dart 更新渠道有哪些?

    On the Dart 编辑器页面 https www dartlang org tools editor 我们可以在 2 个频道之间进行选择 dev and stable 它们之间有什么区别 Rico Wind的这篇文章 https gr
  • 下划线变量后跟范围在 bash 中意味着什么:$_{0..10}

    根据tldp org http tldp org LDP Bash Beginners Guide html sect 03 02 html bash下划线变量是 下划线变量在 shell 启动时设置 包含参数列表中传递的正在执行的 she