我用来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
变体。