每次执行脚本时增加一列

每次执行脚本时增加一列

我有以下脚本:

#!/bin/bash
# This shell script is to tabulate and search for SR
n=0 # Initial value for Sl.No
next_n=$[$n+1]
read -p "Enter your SR number : " SR
echo -e "$next_n\t$SR\t$(date)" >> /tmp/cases.txt

当我第一次运行脚本时,我将输入SR = 123.
输出将是:

1  123   <date>

我想再次运行该脚本,并为SR = 456.我希望输出是:

1 123 <date>
2 456 <date>

但是,我的脚本总是打印第 1 列,因为1,1,1,1n正在重新初始化。有没有办法在每次为新的 SR 值执行脚本时自动将第 1 列增加 1 倍?

答案1

您可以像这样读取文件最后一行第一列中的值:

#!/bin/bash
# This shell script is to tabulate and search for SR
next_n=$(($(tail -n1 /tmp/cases.txt 2>/dev/null | cut -f1) + 1))
read -p "Enter your SR number : " SR
echo -e "$next_n\t$SR\t$(date)" >> /tmp/cases.txt

cut -f1选择该行的第一个字段,字段是由制表符分隔的字符序列。

当文件为空或不存在时,这也适用:next_n在这种情况下设置为 1。

答案2

[ -s "/tmp/cases.txt" ] || : > /tmp/cases.txt
next_n=$(expr "$(wc -l < /tmp/cases.txt)" \+ 1)
read -p "Enter your SR number: " SR
printf '%d\t%d\t%s\n' "$next_N" "$SR" "$(date)" >> /tmp/cases.txt

相关内容