스크립트 끝에서 명령을 실행하십시오.

스크립트 끝에서 명령을 실행하십시오.

일부 파일을 복사하고 싶지만 스크립트가 끝날 때까지 복사 명령 실행을 기다리고 싶습니다. 그 이유는 사용자 입력으로 인해 스크립트가 중간에 중단될 것으로 예상할 수 있고 디렉터리를 부분적으로 복사하지 않을 것이기 때문입니다.

exit 0동일한 프로그램에서 특정 명령이 실행될 때까지 기다리는 방법이 있습니까 ?

#!/bin/bash
for f in 'find something/ -newer something_else -type f'; do
   #Expecting user input interruption
   cp "$f" . #I want to wait executing this
done

if [ -f something_else ]; then
   exit 0 #I want it executed here
else 
   exit 1
fi

답변1

가장 간단한 해결책은 나중에 복사하는 것입니다.

#!/bin/bash

# something something script stuff

[ ! -f somefile ] && exit 1

find something -type f -newer somefile -exec cp {} . ';'

사용자가 각 사본을 확인하도록 하려면 다음 -ok대신 사용하십시오 .-execfind

find something -type f -newer somefile -ok cp {} . ';'

먼저 파일을 반복하여 복사할 파일 목록을 만들고 사용자에게 각 파일에 대한 입력을 요청합니다.그 다음에복사를 수행하려면:

copy_these=$(mktemp)

find something -type newer somefile \
    -exec bash -c '
        read -p "Copy $0? [y/n/q]: "
        case "$REPLY" in
            [yY]*) printf "%s\n" "$0" ;;
            [qQ]*) exit 1 ;;
        esac' {} ';' >"$copy_these"

# do other stuff

# then copy the files

xargs cp -t . <"$copy_these"

rm -f "$copy_these"

이는 모든 파일 이름이 올바르게 작동하고(개행 없음) cpGNU가 사용된다고 가정합니다.

관련 정보