次のスクリプトがあります。
#!/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に設定します。