twa*_*aum 3 shell scripting csh tcsh
我一直试图找到一种解决方法来在tcsh中广泛定义序列号列表,即.而不是做:
i = ( 1 2 3 4 5 6 8 9 10 )
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情(知道它不起作用)
i = ( 1..10 )
Run Code Online (Sandbox Code Playgroud)
这在foreach循环中特别有用(我知道我可以使用while,只是试图寻找替代方案).
环顾四周我发现了这个:
foreach $number (`seq 1 1 9`)
...
end
Run Code Online (Sandbox Code Playgroud)
发现在这里.他们说它会生成一个以1开头的数字列表,增量为1,以9结尾.
我尝试过,但它没有用.显然seq不是命令.它存在还是普遍错误?
还有其他想法吗?
seq肯定存在,但可能不在您的系统上,因为它不在POSIX标准中.我刚注意到你的命令中有两个错误.以下工作如何?
foreach number ( `seq 1 9` )
echo $number
end
Run Code Online (Sandbox Code Playgroud)
注意遗漏美元符号和seq命令周围的额外反推.
如果仍然无效,您可以seq使用awk以下方式模拟:
foreach number ( `awk 'BEGIN { for (i=1; i<=9; i++) print i; exit }'` )
Run Code Online (Sandbox Code Playgroud)
另外两种选择:
如果您的机器没有seq它可能有jot(BSD/OSX):
foreach number ( `jot 9` )
Run Code Online (Sandbox Code Playgroud)
我以前从未听说jot过,但它看起来像seq类固醇.
使用bash内置的括号展开:
for number in {1..9}
Run Code Online (Sandbox Code Playgroud)