대시로 시작하고 중앙에 공백이 있는 파일을 입력하는 스크립트

대시로 시작하고 중앙에 공백이 있는 파일을 입력하는 스크립트

pandoc을 사용하여 .md 파일을 .pdf로 변환하는 쉘 스크립트가 있습니다.

예를 들어 스크립트를 실행할 때:

./script*file.md

다음과 같기 때문에 변환해야 하는 파일을 감지하지 못합니다.

-첫 번째 파일.md

second_file.md

첫 번째는 대시로 시작됩니다. 두 번째는 중간 공백 사이에 밑줄이 있습니다.

답변1

스크립트는 파일의 파일 이름을 사용할 가능성이 높으며, 그 이름은 다음과 같은 일부 유틸리티에 대한 옵션 세트로 해석됩니다.

rm "$filename"

$filename대시 로 시작하세요.

경로 이름이 대시로 시작하는 경우 명령이 올바르게 실행되는지 확인하는 두 가지 방법이 있습니다.

  1. 경로명을 확인하세요대시로 시작하지 않습니다, 예를 들어 절대 또는 상대 경로를 포함합니다. 로 현재 디렉터리의 파일을 삭제하려면 rm "$filename"반드시 $filename로 시작하세요 ./. 이는 일반적으로 루프를 변경하는 문제입니다.

    for filename in some-pattern; do
    

    입력하다

    for filename in ./some-pattern; do
    
  2. --아래와 같이 유틸리티에 명령줄 옵션의 끝을 알리는 데 사용됩니다 .

    rm -- "$filename"
    

    명령줄에서 옵션 구문 분석이 중지되고 --모든 후속 인수는 가능한 옵션이 아닌 유틸리티에 대한 피연산자로 처리됩니다. 이는 명령줄에서 사용자로부터 경로 이름을 받았는데 경로가 포함되어 있는지 알 수 없는 경우에 좋은 솔루션입니다. ./사용자가 절대 경로를 제공했더라도 경로 이름을 현재 디렉터리에 상대적으로 지정하기 때문에 주어진 경로 이름 앞에만 접두사를 붙일 수는 없습니다 .

공백 등을 포함하는 파일 이름과 관련:

관련 정보