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)으로 제공하는 것이 더 나을 수 있습니다. 보다 표준적일 뿐만 아니라 모든 명령줄 인수를 합칠 수 있는 최대 길이가 있으며 파일은 그보다 길 수 있습니다. 지금 작동하더라도 시간이 지남에 따라 해당 파일이 더 커질 수 있다면 결국 모든 것을 인수로 전달하면 "인수 목록이 너무 김" 오류와 함께 작동이 중지됩니다.

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

관련 정보