对于 {1..$VAR} 中的 i;回显 $i;完毕
我正在尝试执行以下操作:
CPU_COUNT=$(cat /proc/stat | grep -E "^cpu[[:digit:]]+ " | wc -l)
let CPU_COUNT=CPU_COUNT-1
for core in {0..$CPU_COUNT}; do
echo $core
done
在具有 4 个核心的系统上,我希望 bash 脚本循环 4 次,将核心从 0 增加到 3。
然而,我收到的输出是:
{0..3}
我所做的显然是错误的,但我怎样才能让它按预期工作呢?
I'm trying to do the following:
CPU_COUNT=$(cat /proc/stat | grep -E "^cpu[[:digit:]]+ " | wc -l)
let CPU_COUNT=CPU_COUNT-1
for core in {0..$CPU_COUNT}; do
echo $core
done
On a system with 4 cores, I would expect the bash script to loop 4 times, incrementing core from 0 to 3.
The output I receive is however:
{0..3}
What I'm doing is clearly wrong, but how do I make it work as intended?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
Bash 不是这样解析的;使用的
另一个优点是没有叉子。
Bash is not parsed that way; use
An additional advantage is the lack of a fork.
您正在寻找
seq
。编辑:您可以使用 getconf(1) 获取可用 CPU 数量:
You are looking for
seq
.Edit: You can use getconf(1) to get the number of CPU available:
来自 bash 手册:
所以 bash 不支持序列表达式中的变量。您可以使用
for
循环代替:From the bash manual:
So bash doesn't support variables in sequence expressions. You can use a
for
loop instead:使用此(zsh、ksh93 和 bash 特定)语法:
您也可以使用 eval,但这将是丑陋的。
Use this (zsh, ksh93 and bash specific) syntax:
You may also use eval, but that would be ugly.