cuo*_*glm 34
使用bash
,zsh
和ksh93
,您可以使用{start..end..step} 大括号扩展形式:
$ echo {1..10}
1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
hee*_*ayl 25
GNUseq
采用分隔符 ( -s
) 选项:
$ seq -s ' ' 1 5
1 2 3 4 5
$ var="$(seq -s ' ' 1 5)"
$ echo "$var"
1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
小智 15
可移植到所有 shell 和任何具有 seq 的系统(因为此问题已标记)
如果开始是 1:
$ echo $(seq 10)
1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
除此以外:
$ echo $(seq 5 10)
5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
与公元前:
$ echo $(echo "for (i=0;i<=1000;i++) i"| bc)
Run Code Online (Sandbox Code Playgroud)
在 bash 中
echo {1..10}
Run Code Online (Sandbox Code Playgroud)
如果 IFS 的值包含换行符(默认情况下),则此回显解决方案有效。
默认情况下 IFS 设置为序列<space><tab><newline>。并且为外壳的每次干净启动而重置。但是,如果您担心在某些极端情况下它可能会发生变化,我们有几种解决方案。
在 bash、zsh、ksh 下只需使用: IFS=$' \t\n' (跳过此答案的所有其余部分)。
但是,在 sh 下重置 IFS 的值可能很复杂,请在此处阅读完整的详细信息。
$ unset IFS; echo $(seq 5 10) #Always work.
Run Code Online (Sandbox Code Playgroud)
将永远工作。前提是下面没有代码(或子脚本)需要 IFS 设置,例如执行OldIFS="$IFS"
.
使用sh的技巧:
sh -c 'IFS="$(printf " \t\nx")"; IFS="${IFS%x}"; printf "$IFS"|xxd' # correct.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
81560 次 |
最近记录: |