나는 "전문적인" 스크립트를 만들고 싶습니다. $1, $2...를 사용하지만 지금은 getopts를 배우고 있습니다.
여기 내 작은 스크립트가 있습니다:
function name(){
echo "My name is $1"
}
function last_name(){
echo "My last name is $1"
}
function name_complete(){
}
while getopts ":n:p:" option;do
case $option in
n)
n=$OPTARG
name $n
;;
p)
p=$OPTARG
last_name $p
;;
esac
done
와 name_complete
함께 사용하는 방법을 알고 싶습니다 .-n
-p
예를 들어:
./script.sh -n John -p Doe
내 이름은 존 도야
감사해요!
답변1
기능을 실행하세요뒤쪽에귀하의 while getopts
- 루프:
function name_complete(){
printf 'My name is %s %s\n' "$1" "$2"
}
while getopts ":n:p:" option; do
case "$option" in
n)
n=$OPTARG
;;
p)
p=$OPTARG
;;
esac
done
name_complete "$n" "$p"
변수는 항상 인용해야 합니다.
답변2
이것으로 시작하세요:
while getopts ":n:p:" option;do
case $option in
n)
n=$OPTARG
;;
p)
p=$OPTARG
;;
esac
done
if [ -n "$n" -a -n "$p" ] ; then
name_complete "$n" "$p"
elif [ -n "$n" ] ; then
name "$n"
elif [ -n "$p" ] ; then
last_name "$p"
else
echo At least one option is needed
fi