3

cshで整数計算を行う必要があります(いいえ、他のシェルはオプションではありません.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、それはインラインではありません。SOを少しグーグルで検索しましたが、これまでのところ成功していないので、どんな助けも大歓迎です!

4

3 に答える 3

3

角かっこの使用は、配列表記または行列演算を示すことを意図していますか? csh にはそのような組み込み機能はありません。

それ以外の場合、 bash$(($a * $b))のように意味する場合は、 csh cmd-substitution を逆引用​​符で使用して、

head -n `expr $a \* $b` m.txt

あなたの目標が余分なプロセスの生成を避けることであった場合、これはあなたの目標を満たしていませんが、それは「インライン」であることに注意してください

編集と誤入力した$( $a * $b )ようです。上記のインライン修正を参照してください。

IHTH。

于 2012-10-16T21:16:30.237 に答える
2

シェルの外で何かを使わなければ、いいえ。

古い学校のシェルスクリプトからの数学の通常の原因は次のexprとおりです。

head -n `expr $a \* $b` m.txt

しかし、それがet alと同じくらい禁止されている場合は、運が悪い. 限目。bc

于 2012-10-16T21:12:23.223 に答える
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 が選択肢にないのか疑問に思いますが。)

于 2012-10-16T23:24:20.310 に答える