셸 스 크 립 트 에서 전달 하 는 매개 변수 3 가지 방법의 비교
#!/bin/bash
#extracting command text_text_text_line options as parameters
help_info(){
echo "NAME"
echo "\t$0"
echo "SYNOPSIS"
echo "\t$0 is a shell test about process options"
echo "DESCRIPTION"
echo "\toption like -a -b param1 -c param2 -d"
}
if [ $# -lt 0 ]
then
help_info
fi
nomal_opts_act()
{
echo -e "
### nomal_opts_act ###
"
while [ -n "$1" ]
do
case "$1" in
-a)
echo "Found the -a option"
;;
-b)
echo "Found the -b option"
echo "The parameter follow -b is $2"
shift
;;
-c)
echo "Found the -c option"
echo "The parameter follow -c is $2"
shift
;;
-d)
echo "Found the -d option"
;;
*)
echo "$1 is not an option"
;;
esac
shift
done
}
# shell ,
# : , ,
# :
getopt_act()
{
echo -e "
### getopt_act ###
"
GETOPTOUT=`getopt ab:c:d "$@"`
set -- $GETOPTOUT
while [ -n "$1" ]
do
case $1 in
-a)
echo "Found the -a option"
;;
-b)
echo "Found the -b option"
echo "The parameter follow -b is "$2""
shift
;;
-c)
echo "Found the -c option"
echo "The parameter follow -c is "$2""
shift
;;
-d)
echo "Found the -d option"
;;
--)
shift
break
;;
*)
echo "Unknow option: "$1""
;;
esac
shift
done
param_index=1
for param in "$@"
do
echo "Parameter $param_index:$param"
param_index=$[ $param_index + 1 ]
done
}
# getopt
# : getopts , , --
# : getopts
#1. set -- , , shift
#2. -a -b dog -c "earth moon" -d -f param1 param2
getopts_act()
{
echo -e "
### getopts_act ###
"
while getopts :ab:c:d ARGS
do
case $ARGS in
a)
echo "Found the -a option"
;;
b)
echo "Found the -b option"
echo "The parameter follow -b is $OPTARG"
;;
c)
echo "Found the -c option"
echo "The parameter follow -c is $OPTARG"
;;
d)
echo "Found the -d option"
;;
*)
echo "Unknow option: $ARGS"
;;
esac
done
shift $[ $OPTIND -1 ]
param_index=1
for param in "$@"
do
echo "Parameter $param_index:$param"
param_index=$[ $param_index + 1 ]
done
}
#getopts
# : :-c "earth moon"
# :-bdog
# ?
# Unknow option: ?
nomal_opts_act -a -b dog -c earth -d -f param1 param2
getopts_act -a -b dog -c "earth moon" -d -f param1 param2
getopt_act -a -b dog -c earth -d -f param1 param2
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부이 기사에서는 Entity Framework Core Code First 접근 방식을 사용하는 ASP.NET Core 6.0 WEP API의 CRUD(만들기, 읽기, 업데이트 및 삭제) 작업에 대해 설명합니다. 웹 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.