Enter 키를 기다리지 않고 쉘 스크립트 읽기

Enter 키를 기다리지 않고 쉘 스크립트 읽기

저는 본질적으로 두 가지 작업만 수행하는 작은 bash 스크립트를 작성하고 있습니다. 두 개의 업데이트 명령을 동시에 실행하고 키 바인딩을 나열합니다. 예를 들어, 같은 방식으로 변수 chmod +x도 작동합니다. using +x내가 원하는 방식은 입력하면 bash filename.sh -Y원하는 키 바인딩을 얻고 로 바꾸면 -Y-X개의 업데이트 명령을 실행하는 것입니다. 어떻게 해야 합니까?

편집; 이것을 언급하는 것을 잊었지만 솔직히 변수에 하이픈이 있는지는 중요하지 않습니다. 내 게시물 제목의 의미는 먼저 Enter 키를 누르지 않고 -Yin을 어떻게 사용합니까? bash filename.sh -Y현재 제가 사용하고 있는 스크립트입니다.

#!/bin/sh

read var

if [ var == upd ]
then 
    sudo pacman -Syyu; yay -Syu
fi

upd실행 후 Enter 키를 누르면 완벽하게 작동합니다 bash filename.sh. 동일한 입력을 어떻게 얻을 수 있습니까 bash filename.sh upd?

답변1

명령줄에서 명령 다음의 첫 번째 단어로 자동 설정되도록 명령줄 인수 변수 $1, 등을 $2사용해야 합니다 . 두 번째 단어입니다. 세 번째입니다. 명령줄에서 인수 개수가 포함된 변수를 사용하여 인수가 있는지 확인할 수도 있습니다 .$3$1$2$3$#

따라서 스크립트는 다음과 같습니다.

#!/bin/bash

if [ $# -gt 0 ]; then
    var="$1"
else
    read var
fi

if [ "$var" == upd ]; then 
    sudo pacman -Syyu; yay -Syu
fi

참고: 공백이 포함될 수 있는 변수는 항상 따옴표로 묶어야 합니다. 특히 해당 변수가 사용자 입력에서 나온 경우라면 더욱 그렇습니다.

관련 정보