Bash 스크립트: 따옴표와 작은 따옴표가 포함된 bash 스크립트에 변수를 전달합니다. 잠깐만요 [닫음]

Bash 스크립트: 따옴표와 작은 따옴표가 포함된 bash 스크립트에 변수를 전달합니다. 잠깐만요 [닫음]

이것이 문자열이라고 가정해 봅시다:

   'a',"b"

작은따옴표와 큰따옴표가 포함되어 있습니다.

이것을 bash 스크립트에 단일 문자열로 전달하려면 어떻게 해야 합니까?

Bash 스크립트는 다음과 같습니다.

#!/bin/bash
echo $1

그것은 울려야 한다

'a',"b"

하지만 문자열이 너무 작다고 가정할 수는 없습니다. 결국은 전부 보내려고 합니다

 /etc/httpd/conf/httpd.conf

이 bash 스크립트의 문자열로.

따라서 따옴표와 작은 따옴표를 동시에 벗어날 수는 없습니다.

답변1

당신은 그것을 사용할 수 있습니다명령 대체:

oo.sh "$(cat /etc/httpd/conf/httpd.conf)"

이것은 실행되어 cat /etc/httpd/conf/httpd.conf출력(파일의 내용)을 주어진 첫 번째 인수에 넣습니다 oo.sh. 인용되어 있으므로 단일 인수로 전달됩니다. 공백과 특수 문자는 영향을 받지 않고 전달됩니다. oo.sh매개변수를 가져옵니다.


그러나 보다 광범위하게는 가능하면 파일 이름을 스크립트에 전달하거나 파일 내용을 표준 입력( oo.sh < /etc/httpd/conf/httpd.conf)으로 전달하는 것이 좋습니다. 보다 표준적인 것 외에도 모든 명령줄 매개변수를 결합한 최대 길이가 있으며 파일은 이 길이보다 길 수 있습니다. 지금 작동하더라도 시간이 지남에 따라 파일이 더 커질 수 있다면 결국 전체 파일을 인수로 전달하면 "arg list too long" 오류와 함께 작동이 중지됩니다.

를 사용하여 이 제한을 찾을 수 있습니다 getconf ARG_MAX. 크기는 매우 다양합니다. 내 시스템에는 2MB 제한과 256KB 제한이 있습니다. 파일이 항상 작다면 걱정할 필요가 없습니다. 하지만 그렇지 않으면 데이터를 스크립트로 가져오는 다른 방법을 시도해야 합니다.

관련 정보