저는 본질적으로 두 가지 작업만 수행하는 작은 bash 스크립트를 작성하고 있습니다. 두 개의 업데이트 명령을 동시에 실행하고 키 바인딩을 나열합니다. 예를 들어, 같은 방식으로 변수 chmod +x
도 작동합니다. using +x
내가 원하는 방식은 입력하면 bash filename.sh -Y
원하는 키 바인딩을 얻고 로 바꾸면 -Y
두 -X
개의 업데이트 명령을 실행하는 것입니다. 어떻게 해야 합니까?
편집; 이것을 언급하는 것을 잊었지만 솔직히 변수에 하이픈이 있는지는 중요하지 않습니다. 내 게시물 제목의 의미는 먼저 Enter 키를 누르지 않고 -Y
in을 어떻게 사용합니까? 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
참고: 공백이 포함될 수 있는 변수는 항상 따옴표로 묶어야 합니다. 특히 해당 변수가 사용자 입력에서 나온 경우라면 더욱 그렇습니다.