답변:
#!/bin/sh
if [ "$#" -ne 1 ] || ! [ -d "$1" ]; then
echo "Usage: $0 DIRECTORY" >&2
exit 1
fi
변환 : 인수 수가 (숫자 적으로) 1이 아니거나 첫 번째 인수가 디렉토리가 아닌 경우 stderr에 사용법을 출력하고 실패 상태 코드로 종료하십시오.
보다 친숙한 오류보고 :
#!/bin/sh
if [ "$#" -ne 1 ]; then
echo "Usage: $0 DIRECTORY" >&2
exit 1
fi
if ! [ -e "$1" ]; then
echo "$1 not found" >&2
exit 1
fi
if ! [ -d "$1" ]; then
echo "$1 not a directory" >&2
exit 1
fi
if [ "$#" -ne 1 ] ; then
거나 if ! [ -d "$1" ]; then
어느 절이 문제를 일으키는 지 확인하십시오.
-d
. 별도의 수표를 추가 -e
하려면 존재 여부를 확인 하는 데 사용할 수 있습니다 .
-e
파일이 존재하면 true를 반환합니다. 답변에 더 친숙한 오류보고를 추가했습니다.
고양이 script.sh
var1=$1
var2=$2
if [ "$#" -eq 2 ]
then
if [ -d $var1 ]
then
echo directory ${var1} exist
else
echo Directory ${var1} Does not exists
fi
if [ -d $var2 ]
then
echo directory ${var2} exist
else
echo Directory ${var2} Does not exists
fi
else
echo "Arguments are not equals to 2"
exit 1
fi
아래와 같이 실행하십시오-
./script.sh directory1 directory2
출력은 다음과 같습니다-
directory1 exit
directory2 Does not exists
" $#
"를 사용 하여 명령 행에 전달 된 총 인수 수를 확인할 수 있습니다.
예를 들어 내 쉘 스크립트 이름은 다음과 같습니다.hello.sh
sh hello.sh hello-world
# I am passing hello-world as argument in command line which will b considered as 1 argument
if [ $# -eq 1 ]
then
echo $1
else
echo "invalid argument please pass only one argument "
fi
출력은 hello-world
shell
그 의미/bin/sh