저는 bash 스크립팅을 처음 접했고 잘 진행되고 있지만 문제가 생겼습니다.
슬래시(/)를 사용하는 스크립트를 생성하려고 하는데 계속 오류가 발생합니다./: is a directory.
따라서 기본적으로 필요한 것은 test/(hello)
터미널의 프로그램에 명령을 전달하는 것입니다. 그래서 작동하도록 백슬래시를 추가했습니다. test\/\(hello\)
그러나 이 오류가 발생합니다. 여기에 문제가 있나요?
답변1
이는 인수 앞에 명령을 전달하지 않는 경우에만 발생합니다. 다음과 같이 명령을 호출해야 합니다.
command [args ...]
이렇게 호출하면 작동합니다.
$ echo test/\(hello\)
test/(hello)
참고로 매개변수를 인용하는 것이 일반적으로 모든 메타 문자를 이스케이프 처리하는 것보다 훨씬 쉽고 읽기 쉽습니다. "
다음을 사용하여 이 작업을 수행 할 수 있습니다 '
(이에 대한 좋은 정보가 있습니다).여기).
답변2
test/(hello)
프로그램에 정확한 문자열을 전달해야 하는 경우 작은따옴표로 묶어서 입력하세요.
someprogram 'test/(hello)'
작은따옴표 문자 자체를 제외하고 모든 문자는 작은따옴표 사이에서 문자 그대로 해석됩니다. 문자열에 작은따옴표 문자가 필요한 경우 이를 '\''
(리터럴 문자열 끝, 다음 문자 인용, 작은따옴표 문자 그대로 해석, 리터럴 문자열 시작)로 전달합니다.
echo 'Lasciate ogne speranza, voi ch'\''entrate'
이는 여기에 표시된 오류 메시지와 관련이 없습니다. 프로그램으로 실행 /: is a directory
하려고 한다는 의미입니다 . /
어쩌면 어딘가에서 프로그램의 전체 경로를 쓰려고 했지만 다음과 같은 추가 공백을 남겨 두었을 수도 있습니다.
/ path/to/program
이를 덜 명확하게 하기 위해 메시지에 다른 구두점 문자나 제어 문자가 있을 수 있습니다. 디버깅을 용이하게 하려면 첫 번째 줄 뒤에 set -x
스크립트의 두 번째 줄을 배치하여 #!
셸이 실행하는 각 줄에 대한 추적 정보를 인쇄하도록 합니다.