pandoc을 사용하여 .md 파일을 .pdf로 변환하는 쉘 스크립트가 있습니다.
예를 들어 스크립트를 실행할 때:
./script*file.md
다음과 같기 때문에 변환해야 하는 파일을 감지하지 못합니다.
-첫 번째 파일.md
second_file.md
첫 번째는 대시로 시작됩니다. 두 번째는 중간 공백 사이에 밑줄이 있습니다.
답변1
스크립트는 파일의 파일 이름을 사용할 가능성이 높으며, 그 이름은 다음과 같은 일부 유틸리티에 대한 옵션 세트로 해석됩니다.
rm "$filename"
$filename
대시 로 시작하세요.
경로 이름이 대시로 시작하는 경우 명령이 올바르게 실행되는지 확인하는 두 가지 방법이 있습니다.
경로명을 확인하세요대시로 시작하지 않습니다, 예를 들어 절대 또는 상대 경로를 포함합니다. 로 현재 디렉터리의 파일을 삭제하려면
rm "$filename"
반드시$filename
로 시작하세요./
. 이는 일반적으로 루프를 변경하는 문제입니다.for filename in some-pattern; do
입력하다
for filename in ./some-pattern; do
--
아래와 같이 유틸리티에 명령줄 옵션의 끝을 알리는 데 사용됩니다 .rm -- "$filename"
명령줄에서 옵션 구문 분석이 중지되고
--
모든 후속 인수는 가능한 옵션이 아닌 유틸리티에 대한 피연산자로 처리됩니다. 이는 명령줄에서 사용자로부터 경로 이름을 받았는데 경로가 포함되어 있는지 알 수 없는 경우에 좋은 솔루션입니다../
사용자가 절대 경로를 제공했더라도 경로 이름을 현재 디렉터리에 상대적으로 지정하기 때문에 주어진 경로 이름 앞에만 접두사를 붙일 수는 없습니다 .
공백 등을 포함하는 파일 이름과 관련: