6 bash
在回应我对 SF 的这个问题的评论时,OP 断言
for i in {1..$NUM}
Run Code Online (Sandbox Code Playgroud)
在 bash 中正确扩展。我可以访问 bash 4.0.33 (Ubuntu)、3.2.25 (Centos) 和 3.00.16(1) (solaris 10)。这些都不会扩展 {1..$NUM}。
有谁知道哪些版本的 bash 进行了扩展?如果不是 bash 那是什么?我知道 zsh 会进行扩展,但是在 OP 的脚本中,shebang 应该消除别名的可能性?
我很确定提出有关服务器故障问题的人是错误的。他们要么故意遗漏了一些细节,要么不知道机器上的一些奇怪的配置(/bin/bash 作为其他内容的链接)。我尝试了两周前的 bash 4.2 版本、CentOS 5 的 bash 3.2 以及我自己刚刚构建的 bash 2.05a(2001 年起)。
ftp.gnu.org上最旧的源代码是 1.14,但这并不能干净地构建,而且我不确定尝试它是否值得。该版本的文档包含与现代文档完全相同的关键短语:
Run Code Online (Sandbox Code Playgroud)The order of expansions is: brace expansion, tilde expan- sion, parameter, variable, command, and arithmetic substitu- tion (done in a left-to-right fashion), word splitting, and pathname expansion.
但实际上,现在我想起来了,这是没有意义的,因为bash 3.0 中添加了"{x..y}" 语法,使得之前的查找变得毫无意义。
那么,让我尝试一下 3.0...对吧。同样的行为。
嗯是的。我非常怀疑。有些东西没有加起来。
(之后...)
啊哈!服务器故障提问者承认“抱歉。我的错误。我已经在 {1..10} 中的 i 中输入了实际数字,所以效果很好。 ”所以,就这样吧。
这个问题的答案是“没有任何版本的 bash 可以这样工作”。:)
| 归档时间: |
|
| 查看次数: |
781 次 |
| 最近记录: |