2개의 변수로 밑줄 표시

2개의 변수로 밑줄 표시

다음과 같이 스크립트에 변수를 추가하려고 합니다.

ssh root@$dev 'cat /etc/hosts > /var/tmp/hosts_$dev_$(date +%F)'

그러나 이것은 작동하지 않습니다.

/var/tmp/hosts\_$dev\_$(date +%F)'
/var/tmp/hosts_${dev}_$(date +%F)'

누군가 나를 도울 수 있습니까? 내가 무엇을 하든 결과는 여전히 동일합니다.

hosts_2017-06-20

향후 사용을 위한 해결 방법:

다음과 같이 큰따옴표 대신 작은따옴표를 사용합니다.

ssh root@$dev "cat /etc/hosts > /var/tmp/hosts\_$dev\_$(date +%F)"

답변1

허락해줘이 멋진 질문을 인용해 보세요Stackexchange의 다른 사이트에서 이미 답변된 질문을 다시 설명할 필요가 없도록 답변을 선택하세요. 다음 부분입니다bash(1)변수 참조와 관련된 맨페이지:

3.1.2.2 작은따옴표

문자를 작은따옴표( ')로 묶으면 따옴표 안의 각 문자의 리터럴 값이 유지됩니다. 앞에 백슬래시가 있더라도 작은따옴표 사이에는 작은따옴표를 사용할 수 없습니다.

3.1.2.3 큰따옴표

문자를 큰따옴표( )로 묶으면 , 및 (기록 확장이 활성화된 경우)를 제외한 따옴표 안의 모든 문자의 리터럴 값이 유지됩니다 ". 이러한 문자는 큰따옴표 안에 특별한 의미를 유지합니다(참조:$`\!$`쉘 확장). 백슬래시는 뒤에 $, `, "또는 \개행 문자 중 하나가 오는 경우에만 특별한 의미를 유지합니다 . 큰따옴표 내에서 이러한 문자 중 하나 뒤에 오는 백슬래시가 제거됩니다. 특별한 의미가 없는 선행 백슬래시 문자는 변경되지 않습니다. 큰따옴표 앞에 백슬래시를 추가하면 큰따옴표 안에 큰따옴표를 넣을 수 있습니다. 활성화되면 !큰따옴표 안에 표시되는 내용이 백슬래시를 사용하여 이스케이프되지 않는 한 기록 확장이 수행됩니다 . 앞의 백슬래시는 !제거되지 않습니다.

특수 매개변수는 *@따옴표로 묶인 경우 특별한 의미를 갖습니다(참조쉘 매개변수 확장).

답변:이것이 바로 개체 파일에 $dev해당 변수의 내용이 있는 이유입니다.

관련 정보