根据tldp.org,bash下划线变量为:
下划线变量是在Shell启动时设置的,包含在参数列表中传递的正在执行的Shell或脚本的绝对文件名。随后,在扩展后,它扩展为上一个命令的最后一个参数。它还设置为执行的每个命令的完整路径名,并放置在导出到该命令的环境中。检查邮件时,此参数保存邮件文件的名称。
但是this对如何在Bash中重复一个字符的答案?对它的用法很奇怪:
# exactly the same as perl -E 'say "=" x 100'.
echo -e ''$_{1..100}'\b='
在使用此变量时,我无法从其语义上做任何事情,所以问题是什么
- 一个字符串。
- 其次是
$_
。 - 之后是范围扩展。
- 后跟另一个字符串
是bash吗?
示例:
$ 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