사용법 메시지가 포함된 명령줄 인수

사용법 메시지가 포함된 명령줄 인수

파일이 명령줄에 입력되었는지 확인하기 위해 스크립트 파일에서 명령줄 인수를 사용하는 데 많은 문제가 있습니다. 기본적으로 ./file이라는 스크립트 파일과 log.log라는 로그 파일이 있습니다. 올바른 파일이 입력되었는지 확인하기 위해 검사를 실행하는 if then else 문이 있습니다. 그렇지 않으면 프로그램이 에코 오류와 함께 종료됩니다. 올바른 파일 이름을 입력하면 스크립트가 계속 실행됩니다. 내가 무엇을 하든 오류 디렉터리 또는 파일이 존재하지 않거나 에코 오류가 발생합니다. 누군가 내가 뭘 잘못하고 있는지 지적할 수 있나요? 당신이 제공할 수 있는 도움에 감사드립니다. 퍼티를 사용하고 있습니다. 이게 내가 가진 거야

  if ["./file log"]
      then
            echo ""
  else
            echo "error"
            exit 0
  fi

답변1

스크립트 자체를 (자체) 참조할 필요는 없습니다. 당신은 그것이 존재해야 한다는 것을 알고 있습니다. log파일이 존재하는지 확인하면됩니다 . 따라서 -f테스트를 사용하십시오("파일이 존재하며 일반 파일입니다"). man test자세한 내용은 참고자료를 참조하세요 ( test본질적으로 동일함 [...]).

if [ -f "log" ]
  then
    echo ""
  else
    echo "error"
    exit 0
fi

스크립트를 호출할 때 파일이 인수로 제공되는 경우 log(예 $ ./file log: ) 첫 번째 인수를 인용할 수 있습니다 $1. 그러므로,

if [ -f "$1" ]

답변2

당신도 이것을 원할 것입니다. $0은 스크립트 이름이고 $#은 매개변수 개수입니다. 추가 참고 사항: 기본적으로 스크립트는 성공 시 0을 반환하고 오류 시 <> 0을 반환합니다.

#!/bin/bash 
    display_usage() { 
        echo "This script must be run with ...." 
        echo -e "\nUsage:\n$0 [arguments] \n" 
    } 

if [ $# -eq 0 ]; then
    display_usage
    exit 1
fi
.... script ....
exit 0

관련 정보