어떤 경우에는 스크립트의 일부를 무시합니까?

어떤 경우에는 스크립트의 일부를 무시합니까?

내 스크립트는 다음과 같습니다

strenggen ( ) { something; }

strengen 1 
strengen 2
strengen 3
strengen 4
strengen 5
etc..

strengen?string=1etc. 라는 디렉토리에 일부 파일을 추가합니다 . strengen?string=2내가 하고 싶은 것은 스크립트를 종료한 다음 다시 실행하면 13, 14, 60000 또는 140000 중 마지막으로 실행된 숫자를 찾도록 하는 것입니다. 파일 이름에 마지막 번호가 포함되어 있으므로 마지막으로 수정된 파일을 찾아 해당 번호(예: find . -type f -print0 | xargs -0 stat -f "%m %N" | sort -rn | head -1 | cut -f2- -d" "또는 이와 유사한 것)를 복사할 수 있다고 생각했습니다. 문자열을 sed하면 시작 번호를 얻을 수 있지만 다른 줄을 무시하는 방법을 모르겠습니다.

답변1

다음 명령은 최신 "strengen" 파일의 번호를 변수에 넣습니다 $LATEST.

LATEST=$(/bin/ls -1t | grep `^strengen` | head -1 | sed -e 's/strengen.*=//')

여기서는 출력에 영향을 미칠 수 있는 별칭을 제거하기 위해 /bin/ls별칭뿐만 아니라 매우 일반적인 별칭도 사용 하고 있습니다.lsls -1ls

또한 ls내가 사용한 옵션 은 (문자 ) -1대신 (숫자 1) 입니다 . 이는 한 줄에 하나의 파일을 나열하라는 의미입니다. 이 옵션은 가장 최근 항목부터 시간순으로 정렬함을 나타냅니다.-llls-tls

또 다른 옵션은 함수 상단에 다음과 같은 것을 넣는 것입니다 strenggen().

[ -e "strengen?string=$1" ] && return

파일이 이미 존재하는 경우 아무런 작업도 수행하지 않고 함수가 즉시 반환됩니다.

관련 정보