파일이 명령줄에 입력되었는지 확인하기 위해 스크립트 파일에서 명령줄 인수를 사용하는 데 많은 문제가 있습니다. 기본적으로 ./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