확장 시 작은따옴표와 큰따옴표를 모두 포함할 수 있는 변수가 포함된 명령줄 인수 인용

확장 시 작은따옴표와 큰따옴표를 모두 포함할 수 있는 변수가 포함된 명령줄 인수 인용

명령 문자열을 올바르게 인용하는 데 실패한 후 다음을 사용하여 작업 디렉터리에 있는 .jpg 파일에 대해 식별 명령을 실행하게 되었습니다. 해당 파일의 이름에는 작은따옴표 및/또는 큰따옴표가 포함될 수 있습니다.

for f in *.jpg; do
    xterm -e bash -c "identify -verbose \"${f/\"/\\\"}\" | less"
done

그러나 문자열 대체 구조를 사용한 변수 확장은 POSIX와 호환되지 않는다는 것을 깨달았습니다.

그렇다면 작은따옴표와 큰따옴표를 사용하여 문자열로 확장할 수 있는 명령줄 인수를 인용하는 방법은 무엇이며, 위 명령에 대한 POSIX 호환 구문은 무엇입니까?

답변1

파일 이름을 명령 문자열에 대한 인수로 전달할 수 있습니다.

for f in *.jpg; do
  xterm -e bash -c 'identify -verbose "$1" | less' bash "$f"
done

관련 정보