꼭 이래야겠어요 완수에요 제 배시 스크립트에 없는 오류 메시지가 인쇄하려면 필요한 경우 인수 카운트입니다 충족되었습니다.
전화했는데 다음 코드:
#!/bin/bash
echo Script name: $0
echo $# arguments
if [$# -ne 1];
then echo "illegal number of parameters"
fi
test: line 4: [2: command not found
내가 왜 그래?
마찬가지로 다른 간단한 명령을 ' [. ] '또는' test '单捞磐啊 인수만 사이의 공간이 있다.
if [ "$#" -ne 1 ]; then
echo "Illegal number of parameters"
fi
또는
if test "$#" -ne 1; then
echo "Illegal number of parameters"
fi
[[]] 때 '대신' 포지셔닝하십시오 bash, 사용하는 것처럼, t # 39 라는 말을 할 수 있는 분할 및 경로명입니다 개확장 doesn& 않을 경우 해당 변수를 필요한 it& # 39 의 일부로 표현식입니다.
<! - 언어: > 랑 없음 -;
[[ $# -ne 1 ]]
또한 같은 몇 가지 다른 기능을 따옴표로 표시하지 않은 찼음을 그룹짓기, 패턴 매칭 (ehas 렉스그로브 패턴 매칭 (를) '') 와 정규 표현식 매칭.
다음 예제에서는 경우 검사를 인수만 사용할 수 있습니다. 따라서 단일 인수로 또는 두 개의.
<! - 언어: > 랑 없음 -;
[[ ($# -eq 1 || ($# -eq 2 && $2 == <glob pattern>)) && $1 =~ <regex pattern> ]]
산술 표현식에서는 순결케 위한 ' ())' 을 사용하여 더 잘할 수 있지만, 일부는 여전히 그들은 여전히 가능한 ' [[]]' like '', 'ne', 'lt eq 색상에는 산술 연산자 - le', '또는' ge gt ',', '') 에 배치하여 마치 하나의 문자열 인수를 표현식에서는.
<! - 언어: > 랑 없음 -;
A=1
[[ 'A + 1' -eq 2 ]] && echo true ## Prints true.
필요할 경우 다른 기능을 하는 데 도움이 될 수 있는 [[]] '조합' 이 잘 알려져 있다.
'-' '아니다' 표시되어도 수락됨 Bash 인수로 종료하십시오 명시적으로 문서화했습니다 사용될 수 있으며, 옳지 않은 일반적인 제안이다. 이후 '64)' 도 '의 값을 # 39 에 정의된 가장 공식 it& 스이제시츠실트 # define EX_USAGE 64 / 명령행을 / 사용 오류' 을 (를) ''. 또한 '2' 에서 'ls' 등 대부분의 도구에서는 복귀하십시오 잘못된 인수. 하지만 요즘 내가 정말 좋은 데 사용될 수도 있으며, 단순히 '2' 내 스크립트에만 복귀하십시오 이젠 더 이상 '1' 에서 사용되는 모든 오류가 발생했습니다. 하지만, '2' s just 배치하십시오 let& # 39 의 가장 일반적인 것은 아마도 # 39, 이후 이곳에서 it& 운영체제별.
if [[ $# -ne 1 ]]; then
echo "Illegal number of parameters"
exit 2
fi
좋은 아이디어 [산술 표현식에서는] 사용할 수 있습니다 (http://wiki.bash-hackers.org/syntax/arith_expr) 를 다루는 you& # 39, re 숫자임.
if (( $# != 1 )); then
echo "Illegal number of parameters"
fi
#!/bin/bash
# usage-message.sh
: ${1?"Usage: $0 ARGUMENT"}
# Script exits here if command-line parameter absent,
#+ with following error message.
# usage-message.sh: 1: Usage: usage-message.sh ARGUMENT
한 사용할 수 있는 간단한 liner 를 통해 수행할 수 있습니다.
[ "$#" -ne 1 ] && ( usage && exit 1 ) || main
이 것으로 분석됩니다.
매개 변수 $ # 같지 bash 테스트하려면 크기 1. 1 (lionbridge 수를 서브노드 명령) 이것이 사실일 경우 사용 () 함수를 호출하여 함께 종료됩니다. 상태 1 및 2. 3. 다른 주 () 함수 호출
주의해야 할 것으로 보고 있다.
이 bash 컨닝 지 많이 도움말에서는 체크아웃합니다 수 있습니다.
확인하기 위해 사용하는, $ # " " 디스테이징하는 인수만 통과한 ','
인수 배열을 사용하여 ',' $ @" " 전달된 사용해야 합니다.
예를 들어, 검사 및 반복 길이 될 것 "이라고 말했다. "' 미풍크 () { 만약 [[" $ # "; gt 0]]; 그럼 $ arg) 에 대한 @" ";; 책임질래 echo $ arg 수행되 fi }
$ @" 미풍크 "; "'
그러나 그는 이 날 수 있는 몇 가지 아티스우드 누각되었습니다 for me, 내 것이다. 따라서 누군가가 기대해 본다.
저는 안전하게 사용할 수 있는 경우에 대비하여 때는기대어 추천합니까 제포츠.
이것은 작은 예:
while getopts "x:c" opt; do
case $opt in
c)
echo "-$opt was triggered, deploy to ci account" >&2
DEPLOY_CI_ACCT="true"
;;
x)
echo "-$opt was triggered, Parameter: $OPTARG" >&2
CMD_TO_EXEC=${OPTARG}
;;
\?)
echo "Invalid option: -$OPTARG" >&2
Usage
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
Usage
exit 1
;;
esac
done
예를 들어 여기에 자세한 내용 http://wiki.bash-hackers.org/howto/getopts_tutorial