根据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(使用前将#替换为@)