>

urxvt로 명령을 실행하기위한 간단한 쉘 스크립트를 작성하려고합니다. 아이디어는 이것입니다 (완전한 스크립트가 아니라 아이디어입니다) :

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

이 스크립트에는 두 가지 문제가 있습니다. 첫 번째는 그 read 입니다  명령 옵션을 무시하기 때문에 이런 종류의 작업에는 적합하지 않습니다 ( echo hello 를 쓰는 경우)  읽기 echo 를 할당합니다   CMD 로  그리고 hello 를 무시 ). 두 번째는 저를 가장 당황스럽게 만드는 것입니다.  즉시 종료되고 입력을 기다리지 않습니다. 나는 그것이 urxvt -e 사실과 관련이 있다고 생각  내장 함수이지만 예를 들어 read  잘 작동합니다.

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

urxvt -e echo hello
  • 답변 # 1

    당신의 목표는 무엇입니까? 에코는 실행 가능합니다 ( /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
    
    

  • 이전 bash - 쉘 초기화 파일
  • 다음 shell script - diff를 사용하는 동안 "df -h"의 크기 변경 무시