입력을 받아들이는 간단한 while 루프가 있습니다.
#!/bin/bash
while true; do
read -rep $'\n '"$USER"'> ' userInput
echo "$userInput"
done
예:
./input.sh
username> command1
command1
username> command2
command2
명령 기록을 가질 수 있습니까? 그러면 키보드를 눌러 이전에 실행된 명령을 볼 수 있습니까(while 루프를 벗어나지 않고)?
답변1
작은 Readline 래퍼를 사용할 수 있습니다 rlwrap
. 이것은 자체적으로 구현하지 않는 유틸리티에 대한 명령 기록을 제공하는 깔끔하고 작은 도구입니다.
rlwrap
스크립트 자체에서 사용할 수 있습니다 .
rlwrap -a ./script.sh
이렇게 하면 호출된 기록 파일이 저장되고 ~/.script.sh_history
해당 파일을 현재 세션뿐만 아니라 향후 세션에서도 사용하여 단계별로 실행할 수 있는 기록을 제공합니다.
설명서를 참조하십시오 rlwrap
.
rlwrap
일반적으로 대부분의 Unices에서 패키지로 제공되지만GitHub 저장소.
답변2
history -s
편집 이력 목록을 이용하여 read -e
이력을 확인할 수 있습니다.
#!/bin/bash
while true; do
read -rep $'\n '"$USER"'> ' userInput
history -s "$userInput"
echo "$userInput"
done
명령 기록과 관련된 다양한 옵션이 있습니다. 동작은 스크립트와 대화형 셸 간에 매우 다를 수 있습니다. 예를 들어, 명령 기록은 스크립트의 파일에서 자동으로 로드되거나 저장되지 않습니다. 이는 귀하의 경우에 필요할 수도 있고 필요하지 않을 수도 있습니다. 하지만 그렇지 않은 경우 코드를 더 추가하여 문제를 해결할 수 있습니다.