我试图找出是否有一种更紧凑的方式来编写以下格式的tcsh代码,理想情况下仍然在tcsh中。我花了一段时间搜索使用不同的关键字,但找不到任何有用的东西。
本质上,代码片段只是通过数字序列循环,然后如果该循环值在一组数字内,则分配一个变量。为简单起见,我已经将$ VAR的数字列表与相对较短的数据进行了比较,并且比较事件的数量很少,但实际问题是两个方面的尺寸的两倍。
foreach VAR (`seq 1 24`)
if ($VAR == 1 || $VAR == 2 || $VAR == 3 || $VAR == 4) then
set cat = small
else if ($VAR == 5 || $VAR == 6 || $VAR == 7 || $VAR == 8) then
set cat = medium
else
set cat = large
endif
end
我想我更多地考虑python,你只能说“如果x在[...]”等,而不是像上面的情况那样需要将$ VAR与每个数字进行单独比较。我考虑过以下类型的设置,但最终会有更多的线路。
foreach VAR (`seq 1 24`)
foreach C (1 2 3 4)
if ($C == $VAR) then
set cat = small
endif
end
...
end
如果提供的代码与tcsh中的代码一样简单,那么bash有更简洁的方法吗?谢谢你的任何提示。
我担心在tcsh
你不会保存任何线路:
#/bin/tcsh
foreach VAR (`seq 1 24`)
if (${VAR} < 5) then
set cat = "small"
else if (${VAR} > 8) then
set cat = "large"
else
set cat = "medium"
endif
end
exit(0)
你也可以考虑将逻辑传递给AWK(我不知道你的情况是否有帮助):
#/bin/tcsh
foreach VAR (`seq 1 24`)
set cat = (`echo ${VAR} | awk '$0<5 {print("small"); exit;} $0>8 {print("large"); exit;} {print("medium");}'`)
end
exit (0)