似乎有是兩個問題你的方法。
首先,在您的數據文件中的科學記數法會引起一些困難。但是,我們可以使用printf
命令進行更正。如果你(如果你想避免使用xargs
命令或替代,
set var1 = `cat file` ; set var1 = `printf "%f' $var1`
)
修改值的初始分配如下
set var1 = `cat file1 | xargs printf "%f"`
set var2 = `cat file2 | xargs printf "%f"`
set var3 = `cat file3 | xargs printf "%f"`
這將轉換您的科學記數法表示(例如,-3.675000e + 05)轉換爲簡單浮點值(例如,在第一個示例中爲-36750.0000)。 Csh不在數字的「e +」之下,並且感到困惑。
但是,我們沒有走出困境的相當尚未。 Csh也不理解負值,所以我們需要另一個命令來排除這些負值。 bc
根據您的需要評估布爾查詢。
重寫你的foreach
循環如下將評估比較正確
foreach kmax ($var1 $var2 $var3)
if (`echo "$kmax > $maxtmp" | bc`) then
set maxtmp = $kmax
endif
end
全部放在一起,你的腳本中的版本似乎工作:
#! /bin/csh
set var1 = `cat file1 | xargs printf "%f"`
set var2 = `cat file2 | xargs printf "%f"`
set var3 = `cat file3 | xargs printf "%f"`
set maxtmp = 0
foreach kmax ($var1 $var2 $var3)
if (`echo "$kmax > $maxtmp" | bc`) then
set maxtmp = $kmax
endif
end
echo $maxtmp
感謝您的詳細回覆。最後我爲此寫了一個C Skript。然而,我嘗試了你的方法,它工作的很好!非常感謝! – MichaelScott 2013-03-22 16:29:50