다음 코드 샘플을 참조하십시오.
MIN=10 if [ -n "$1" ]; then echo "$1"; fi if [ -n "$2" ]; then echo "$2"; fi if [ -n "$3" ]; then echo "$3"; fi if [ -n "$4" ]; then echo "$4"; fi if [ -n "$5" ]; then echo "$5"; fi if [ -n "$6" ]; then echo "$6"; fi if [ -n "$7" ]; then echo "$7"; fi if [ -n "$8" ]; then echo "$8"; fi if [ -n "$9" ]; then echo "$9"; fi if [ -n "${10}" ]; then echo "${10}"; fi echo "List of arguments: "$*"" echo "Name of this script: "$0"" if [ $# -lt "$MIN" ]; then echo "Not enough arguments, need $MIN to run."; fi
예를 들어 $./new.sh q w e r t y u i o p
의 터미널 출력은 다음과 같습니다.
q w e r t y u i o p List of arguments: q w e r t y u i o p Name of this script: ./new.sh
및 는 다음과 같습니다.
q w e r t y u i o List of arguments: q w e r t y u i o Name of this script: ./new.sh Not enough arguments, need 10 to run.
질문 : -n
는 무엇을 의미합니까?
댓글
답변
[
는 test
내장의 또 다른 이름입니다. 여기 및 여기 , this 도 있습니다.
if
의 시퀀스 문은 아마도 루프로 더 나을 것입니다. Bash에서는 간접 확장을 사용할 수 있습니다.
for ((i=1 ; i <= 10 ; i++)) ; do if [ -n "${!i}" ] ; then echo "${!i}" fi done
더 일반적인 관용구는 아마도 모든 항목에 shift
를 사용하는 것입니다. 반복하지만 인수 목록을 파괴합니다.
또한 인용 : 여기서 $0
는 인용 부호 밖에 있습니다. 대부분의 경우 단어 분할 및 파일 이름 확장을 명시 적으로 원하지 않는 한 모든 변수 확장을 따옴표로 묶는 것이 더 유용합니다.
echo "Name of this script: "$0""
그러므로 다음과 같이 작성하세요.
echo "Name of this script: $0"
댓글
- 함수 내에서
shift
를 사용할 수 있으며 호출자 '의 인수 목록에 영향을주지 않지만 함수를 사용하는 것은 분명히 약간입니다. hackish.
help test
를 읽었습니까?[
및-n
와 같은 항목은 검색하기가 끔찍합니다.bash -n myscript
가 무엇을하는지 궁금해하신다면 구문 확인a> 스크립트를 실행하는 대신