표적: less
콘텐츠(변수에서)를 입력한 다음 사용자에게 콘텐츠를 파일(예: .recovered_object
) 에 저장해야 하는지 묻습니다.그 후에야사용자가 로그아웃합니다 less
.
내 스크립트에서 발췌한 내용은 다음과 같습니다.
...
# Show each blob until one is chosen
counter=1
while IFS='' read sha; do
printf "Showing blob %d of %d" "$counter" "$BLOB_COUNT"
contents=$(git show ${sha})
${PAGER:-less} ${contents}
if read -q '?Save and quit (y/n) ?'; then
echo "$contents" > .recovered_object
exit 0
else
((counter++))
fi
done <<< ${DANGLING_BLOBS_SHA}
exit 0
현재로서는 키를 누르면( 제외 y
) 다음 파일로 이동합니다... 하지만 이렇게 하면 사용자가 위로 스크롤( k
)하거나 아래로 스크롤( )하거나 다른 키맵을 j
사용하는 것을 방지할 수 있습니다!less
if
이 블록이 즉시 실행되는 것을 어떻게 방지할 수 있나요 ?
추신: 저는 일반적으로 쉘 스크립팅을 처음 접하는 사람이므로 어떤 조언이라도 환영합니다.
PSS: 사용하고 있지만 원하는 사용자 경험을 달성하는 데 더 도움이 된다면 zsh
로 전환하는 데 반대하지 않습니다 .bash
답변1
-f
플래그(또는 )와 함께 프로세스 대체를 사용하는 것이 --force
작동하는 것 같습니다.
${PAGER:-less} -f <(echo "$contents")