我需要在csh中做一些整数运算(不,其他shell不是选项,bc也不是,perl也不是,python也不是句点)。
在bash中,我的任务如下所示
seq 1 1 10 > m.txt #supplied from elsewhere
a=2 #supplied from elsewhere
b=3 #supplied from elsewhere
head -n $[$a*$b] m.txt # the line in question那么问题是,csh中是否有一个计算$[$a*$b]内联的表达式?
我知道我可以在csh中做@ c = $a * $b,但这不是内联的。我做了一点点谷歌和搜索这样,但至今没有成功,所以任何帮助都是非常感谢的!
发布于 2012-10-16 21:16:30
您使用方括号是否意味着表示数组符号或矩阵数学?csh没有这样的内置功能。
否则,如果您的意思是像bash $(($a * $b))那样,可以使用cmd替换和反引号来给出
head -n `expr $a \* $b` m.txt请注意,如果您的目标是避免产生额外的过程,这不符合您的目标,但它是“一致的”。
编辑我看到我被误认为是$( $a * $b ),请参阅上面的内联更正。
是的。
发布于 2012-10-16 21:12:23
不用外壳外的东西,不行。
老学校的shell脚本中常见的数学罪魁祸首是expr。
head -n `expr $a \* $b` m.txt但是如果这和bc等人一样,那么你就不走运了。句号。
发布于 2012-10-16 23:24:20
是的,但它不漂亮:
% seq 1 1 10 > m.txt
% set a = 2
% set b = 3
% head -n `@ tmp = $a * $b ; echo $tmp ; unset tmp` m.txt
1
2
3
4
5
6请注意,如果您碰巧有一个名为$tmp的变量,这将打击该名称,因此选择一个唯一的名称。
(但我不知道为什么bc、perl和python不是一个选项。)
https://stackoverflow.com/questions/12923004
复制相似问题