我有以下脚本:
#!/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,1
它n
正在重新初始化。有没有办法在每次为新的 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