我需要在 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
,但这不是内联的。我做了一些谷歌搜索和搜索,但到目前为止没有成功,所以任何帮助非常感谢!
答案 0 :(得分:3)
您使用方括号是否表示数组符号或矩阵数学? csh没有这样的内置功能。
ELSE,如果你的意思是像bash $(($a * $b))
,你可以使用带反引号的csh cmd-substitution来给你
head -n `expr $a \* $b` m.txt
请注意,如果您的目标是避免产生额外的流程,这不符合您的目标,但它是“在线”
修改我发现我输入错误为$( $a * $b )
,请参阅上面的内联修正。
IHTH。
答案 1 :(得分:2)
不使用shell之外的东西,没有。
旧学校shell脚本中常见的数学元素是expr
:
head -n `expr $a \* $b` m.txt
但如果那就像 verboten 那样bc
et al ,那么你就不走运了。周期。
答案 2 :(得分:1)
是的,但它并不漂亮:
% 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。)