실행하려는 내용을 간단히 입력할 수 있다는 것을 알고 있습니다.
func()
{
cd scripts
./excellent/script
}
그러나 내가 원하는 것은 ./excellent/script
입력하지 않고 명령줄에 입력하는 것입니다. 그런 식으로 실행하면 func
필요한 것을 거기에 넣고 데모가 준비될 때까지 기다립니다.
$ func
$ ./excellent/script
답변1
이것은 기본적으로 달성될 수 있습니다. 실제로 일어나는 일은 명령줄 프롬프트가 가짜 프롬프트일 뿐이라는 것입니다. 그러나 입력하는 내용은 즉시 실행되므로 실제 명령 프롬프트일 수도 있습니다.
func() {
cd scripts
read -e -p '$ ' -i './excellent/script' command
eval $command
}
프롬프트가 그보다 더 복잡하다면 올바르게 보이도록 하기 위해 $
해당 행 앞에 -p '$ '
행 echo -ne "[whatever] "
이나 이와 유사한 행을 제거하고 추가해야 할 수도 있습니다 read
.