문자열의 문자열에 변수를 인쇄합니다.

문자열의 문자열에 변수를 인쇄합니다.

문자열 문자열 내에서 변수를 인쇄하는 방법을 모르겠습니다.

다음과 같은 변수 없이 시작했는데 잘 작동했습니다.

#!/bin/bash

ssh 1.1.1.1 $'sudo -H -u apache bash -c \'cd ~/html; echo development > stuff.text\''

내 서버에 로그인하면 파일에 .perfect 라는 단어가 포함되어 있는 1.1.1.1것을 볼 수 있습니다 .stuff.textdevelopment

그런 다음 다음 bash 스크립트를 만들었습니다.

#!/bin/bash

BRANCH=development
ssh 1.1.1.1 $'sudo -H -u apache bash -c \'cd ~/html; echo ${BRANCH} > stuff.text\''

하지만 이 bash 스크립트를 실행하면 빈 stuff.text파일이 생성됩니다. 또한 다음 명령을 시도했지만 둘 다 구문/구문 분석 오류가 발생했습니다.

ssh 1.1.1.1 $`sudo -H -u apache bash -c 'cd ~/html; echo ${BRANCH} > stuff.text'`
ssh 1.1.1.1 ${`sudo -H -u apache bash -c 'cd ~/html; echo ${BRANCH} > stuff.text'`}
ssh 1.1.1.1 ${sudo -H -u apache bash -c 'cd ~/html; echo ${BRANCH} > stuff.text'}
ssh 1.1.1.1 ${"sudo -H -u apache bash -c 'cd ~/html; echo ${BRANCH} > stuff.text'"}

다른 문자열 내의 문자열 내에 변수를 작성하는 방법은 무엇입니까?

답변1

불필요하게 복잡한 표기법을 사용하고 있습니다. 여기서는 전혀 필요하지 $않으며 ssh원격 서버에서 명령으로 실행될 문자열을 허용합니다. cd아무데도 갈 필요가 없습니다 . 이 시도:

#!/bin/bash

## avoid CAPS for shell variable names.
branch=development

ssh 1.1.1.1 "sudo -H -u apache bash -c 'echo $branch > ~/html/stuff.text'"

답변2

많은 시행착오 끝에 이것이 효과가 있다는 것을 알았습니다.

#!/bin/bash

BRANCH=development
ssh 1.1.1.1 $"sudo -H -u apache bash -c 'cd ~/html; echo ${BRANCH} > stuff.text'"

development이제 파일의 단어를 볼 수 있습니다~/html/stuff.text

관련 정보