如何把一堆stdout的數字運算後再stdin? - Linux

Table of Contents

舉個fdisk的例子,
fdisk -lu /dev/sda|grep ^/dev/sda|cut -c 29-37
690794
94638914
10458314
29993354
35262674
36049859
94638914
現在我想把每一個數字扣掉16666
echo $((`fdisk -lu /dev/sda|grep ^/dev/sda|cut -c 29-37`-16666))
zsh: bad math expression: operator expected at `94638914\n ...'

我希望運算後的每一項當成stdin給dd當成參數但光是運算就卡死了,連echo
都出不來,請問這部分要怎模解決?

--
太初有道,道與耶和華同在,道就是耶和華。這道太初與耶和華同在。
萬物乃藉祂所造,凡被造的沒有一樣不是藉著祂所造的。生命在祂裡頭,
這生命就是人的光。光照在黑暗裡,黑暗卻不接受光。

吾輩乃生於黑暗,行於黑暗。因神之指引,行向光明;又因撒旦誘惑,回歸黑暗。
我不斷地徘徊於光明與黑暗之間,從被造之日至今,又自今直到那審判之日的來臨。

--

All Comments

Sandy avatarSandy2012-06-05
xargs -I@ expr @ - 16666
Agatha avatarAgatha2012-06-10
推簽名檔
Rae avatarRae2012-06-13
先確定一下那些數字是從哪來的,是 stdout 還是 stderr
Ivy avatarIvy2012-06-17
它不就跟你說了 "\n" 啊
Jacob avatarJacob2012-06-21
就算看到\n,我也不知道要怎麼處裡(泣),我以為會先算完一行
再往下算的。
Dinah avatarDinah2012-06-21
話說為什麼是94638914\n而不是690794\n啊?第一筆通關了?
Queena avatarQueena2012-06-23
它看到的是 $((123\n 234\n 345\n 456\n -16666))
Bennie avatarBennie2012-06-24
感謝一樓L大,我又多學到兩個指令了XD
Tom avatarTom2012-06-26
回K大:我意思是第一筆690794後面就有\n了,為什麼stderr
Kama avatarKama2012-06-28
卻是從第二筆的94638914\n才說?我以為會顯示690794\n就錯誤