すべてのシェルに適用するには1を加えます。

すべてのシェルに適用するには1を加えます。

exprファイル内の数字を増やすために使用しています。
これはうまくいきますが:

NUM=$(expr $(grep customer file.txt | cut -f4 -d' ' | sort -n | tail -n 1) + 1)  

exprこれがすべてのシェルで利用可能かどうかはわかりません。
しかし、以下はうまくいきません。

NUM=$((grep customer file.txt | cut -f4 -d' ' | sort -n | tail -n 1) + 1))                                        

それでは、すべてのシェルで動作するように追加する方法はありますか?

ベストアンサー1

4列の単語を含む行の最大数を見つけ、customerここに1を加えて割り当てようとしていますNUM

 NUM=$( awk '/customer/ && $4 > n { n = $4 } END { print n + 1 }' file.txt )

exprすべてのPOSIXシェルで動作します(実際に使用しているLinuxディストリビューションには依存しません)。

だからそうだろう

NUM=$(( $( grep ... ) + 1 ))

しかし、あなたは使用します

NUM=$(( grep ... ) + 1 ))

ブラケットが不均衡です。

しかし、私はより単純なawkバリエーションを使用します。

おすすめ記事