首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >csh内嵌数学

csh内嵌数学
EN

Stack Overflow用户
提问于 2012-10-16 20:36:36
回答 3查看 3.8K关注 0票数 3

我需要在csh中做一些整数运算(不,其他shell不是选项,bc也不是,perl也不是,python也不是句点)。

bash中,我的任务如下所示

代码语言:javascript
复制
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,但这不是内联的。我做了一点点谷歌和搜索这样,但至今没有成功,所以任何帮助都是非常感谢的!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-16 21:16:30

您使用方括号是否意味着表示数组符号或矩阵数学?csh没有这样的内置功能。

否则,如果您的意思是像bash $(($a * $b))那样,可以使用cmd替换和反引号来给出

代码语言:javascript
复制
head -n `expr $a \* $b` m.txt

请注意,如果您的目标是避免产生额外的过程,这不符合您的目标,但它是“一致的”。

编辑我看到我被误认为是$( $a * $b ),请参阅上面的内联更正。

是的。

票数 3
EN

Stack Overflow用户

发布于 2012-10-16 21:12:23

不用外壳外的东西,不行。

老学校的shell脚本中常见的数学罪魁祸首是expr

代码语言:javascript
复制
head -n `expr $a \* $b` m.txt

但是如果这和bc等人一样,那么你就不走运了。句号。

票数 2
EN

Stack Overflow用户

发布于 2012-10-16 23:24:20

是的,但它不漂亮:

代码语言:javascript
复制
% 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不是一个选项。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12923004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档