【发布时间】:2012-02-24 05:03:49
【问题描述】:
我正在尝试在 shellscript 中做这样的事情:
STEP=5
LIST=[1-$STEP]
for i in $LIST
echo $i
done
我期望的输出是:
1 2 3 4 5
我可能以前见过这种用法(例如 [A-Z] ),但我不记得正确的语法。感谢您的帮助!
【问题讨论】:
我正在尝试在 shellscript 中做这样的事情:
STEP=5
LIST=[1-$STEP]
for i in $LIST
echo $i
done
我期望的输出是:
1 2 3 4 5
我可能以前见过这种用法(例如 [A-Z] ),但我不记得正确的语法。感谢您的帮助!
【问题讨论】:
试试这个。请注意,您使用包含 LF 的 echo 命令。如图所示,使用 echo -n 在同一行获取输出
STEP=5
for i in `seq 1 $STEP`; do
echo $i
done
【讨论】:
seq 不是 POSIX 实用程序,可能不可用。 echo -n 永远不应该被使用;改用printf,它可以方便地抑制换行符。
假设这是 bash:
$ echo {1..5}
1 2 3 4 5
$ STEP=5
$ echo {1..$STEP}
{1..5}
$ eval echo {1..$STEP}
1 2 3 4 5
【讨论】:
echo {1..5} 输出 1 2 3 4 5 是否存在名为 1 的文件。您是否将此与echo [1-5] 混淆了?