입력 인수가 있는지 확인해야합니다. 다음 스크립트가 있습니다
if [ "$1" -gt "-1" ]
then echo hi
fi
나는 얻다
[: : integer expression expected
입력 인수 1이 있는지 먼저 확인하는 방법은 무엇입니까?
답변
그것은:
if [ $# -eq 0 ]
then
echo "No arguments supplied"
fi
$#
변수는 당신에게 스크립트가 전달 된 입력 인수의 수를 알려줍니다.
또는 인수가 빈 문자열인지 아닌지 확인할 수 있습니다.
if [ -z "$1" ]
then
echo "No argument supplied"
fi
-z
“$ 1″의 확장이 널 (null) 문자열인지 아닌지 스위치를 테스트합니다. 널 문자열 인 경우 본문이 실행됩니다.
답변
이 방법을 시연하는 것이 좋습니다
if [[ $# -eq 0 ]] ; then
echo 'some message'
exit 1
fi
인수가 너무 적은 경우 일반적으로 종료해야합니다.
답변
경우에 따라 사용자가 스크립트에 인수를 전달했는지 여부를 확인해야하며 그렇지 않은 경우 기본값으로 돌아갑니다. 아래 스크립트에서와 같이 :
scale=${2:-1}
emulator @$1 -scale $scale
사용자가 scale
두 번째 매개 변수로 전달하지 않은 경우 -scale 1
기본적으로 Android 에뮬레이터를 시작 합니다. ${varname:-word}
확장 연산자입니다. 다른 확장 연산자도 있습니다.
${varname:=word}
값 을 반환하는 대신 undefined 를 설정 합니다 .varname
word
${varname:?message}
varname
정의되고 null이 아닌 경우 반환 하거나message
스크립트를 인쇄 하고 스크립트를 중단합니다 (예 : 첫 번째 예).${varname:+word}
이 정의되고 null이 아닌word
경우에만 반환 합니다varname
. 그렇지 않으면 null을 반환합니다.
답변
시험:
#!/bin/bash
if [ "$#" -eq "0" ]
then
echo "No arguments supplied"
else
echo "Hello world"
fi
답변
인수가 스크립트에 전달되었는지 감지하는 다른 방법 :
((!$#)) && echo No arguments supplied!
주 (( expr ))
식의 원인은의 규칙에 따라 평가하는 쉘 산술 .
인수가 없을 때 종료하려면 다음과 같이 말할 수 있습니다.
((!$#)) && echo No arguments supplied! && exit 1
위의 또 다른 (유사한) 방법은 다음과 같습니다.
let $# || echo No arguments supplied
let $# || { echo No arguments supplied; exit 1; } # Exit if no arguments!
help let
말한다 :
let: let arg [arg ...]
Evaluate arithmetic expressions. ... Exit Status: If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise.
답변
간단한 스크립트에이 스 니펫을 자주 사용합니다.
#!/bin/bash
if [ -z "$1" ]; then
echo -e "\nPlease call '$0 <argument>' to run this command!\n"
exit 1
fi
답변
지적해야 할 더 많은 기준이 있기 때문에 단순히 문자열이 null인지 테스트 할 수 있다고 덧붙입니다.
if [ "$1" ]; then
echo yes
else
echo no
fi
마찬가지로 arg count를 기대한다면 마지막 테스트를하십시오.
if [ "$3" ]; then
echo has args correct or not
else
echo fixme
fi
arg 또는 var와 마찬가지로
