다음 스크립트가 있습니다.
#!/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