加 1 以适用于所有 shell

加 1 以适用于所有 shell

我用来expr递增来自文件的数字。
尽管以下方法有效:

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

我不确定是否expr在所有 shell 中都可用。
但以下方法不起作用:

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

那么有没有一种方法可以以适用于所有 shell 的方式进行加一呢?

答案1

您想要找到第 4 列中包含单词 的行中的最大数字customer,并将其加一分配给NUM

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

expr可以在任何 POSIX shell 中工作(实际上,它不依赖于您使用的 Linux 发行版)。

所以会

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

但你正在使用

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

其中括号不平衡。

不过,我会选择更简单的awk变体。

相关内容