【问题标题】:bash shell programbash 外壳程序
【发布时间】:2010-02-11 10:37:53
【问题描述】:
!/bin/bash
echo Enter the num
read n
for i in { 1..10 }
do
m=$(( n*i ))
echo "$i * $n" = $m
done

我得到了错误

for:8:非法编号:{ 请提出解决方案

【问题讨论】:

  • 请将代码格式化为代码。

标签: bash shell brace-expansion


【解决方案1】:

这样做

#!/bin/bash
read -p "Enter the num: " n
for i in {1..10}
do
    m=$(( n*i ))
    echo "$i * $n" = $m
done

shebang 错误,不要在大括号扩展中留空格,例如 {0..10},而不是 { 0..10 }

【讨论】:

  • 能否请您告诉我我们如何在 ksh 中做到这一点。{0..10} is not valid is ksh
  • @benjamin 您总是可以使用标准的 seq 命令,例如:“for i in $(seq 1 10); do echo $i; done”
  • @benjamin,我的 ksh 版本支持大括号扩展。您可以在脚本中尝试ksh -o braceexpand set -o braceexpand
【解决方案2】:

这在 bash 中有效:

for (( i=1; i<=10; i++ )); do
    # ...
done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多