내장된 읽기에 대해 알아보기

내장된 읽기에 대해 알아보기

urxvt를 사용하여 명령을 실행하는 간단한 쉘 스크립트를 작성하려고 합니다. 아이디어는 다음과 같습니다(전체 스크립트가 아니라 아이디어만).

PRMPT="read -r CMD"
urxvt -g 55x6-20+20 -e $PRMPT
CMD

이 스크립트에는 두 가지 문제가 있습니다. 첫 번째는 read명령의 옵션을 무시하기 때문에 이런 종류의 작업에 적합하지 않습니다(read라고 쓰면 할당 되고 무시 echo hello됩니다 ). 두 번째이자 나를 가장 혼란스럽게 하는 것은 내 입력을 기다리지 않고 즉시 종료하는 것입니다. 나는 이것이 내장 함수와 관련이 있다고 생각 하지만, 예를 들어 그것은 잘 작동합니다.echoCMDhellourxvt -ereadurxvt -e echo hello

스크립트를 변경하는 방법에 대한 제안 사항이 있는 사람이 있습니까?

답변1

당신의 목표는 무엇입니까? echo는 실행 가능 /bin/echo하고( ) 읽기는 내장되어 있습니다. -e는 실행 파일을 실행한다는 의미입니다. 쉘의 내장 기능(bash?)을 사용하려면 다음을 사용하십시오.urxvt -e /bin/bash -c read -r CMD

답변2

모르겠어요 urxvt. 하지만 제가 도와드릴 수 있어요 read.

이 방법을 사용하는 경우 read:

read -r CMD

첫 번째 할당토큰변수를 읽습니다 CMD. 더 많은 태그를 읽으려면 더 많은 변수를 명시적으로 선언할 수 있습니다.

read -r CMD ARGS1 ARG2 ARG3

이 경우 할당해야 하는 변수 수보다 많은 태그가 있는 경우 마지막 변수는 직관적으로 읽어야 하는 값과 나머지 태그를 읽은 값을 모두 가져옵니다.

옵션을 추가하여 배열을 사용할 수도 있습니다 -a.

read -ra CMD

배열을 확장하려면 다음을 수행하십시오.

"${CMD[@]}"

삽화.

$ read -a cmd
echo ok
$ ${cmd[@]}
ok

관련 정보