는 내가 우분투 또는 임베디드 클라이언트 아라고에 로컬로 실행하면 완벽하게 작동하는 sed
명령이 있습니다ssh에서 sed를 사용하여 큰 따옴표와 변수가 포함 된 행을 원격으로 편집하는 방법은 무엇입니까?
sed
의 두 버전에 변화 줄 필요로하는 무슨이 정확하게 결과
sed -i 's/export PART="$1"/export PART="A"/' flash.sh
:
를export PART="$1"
내 문제가
export PART="A"
에, 나는 T로 네트워크를 통해 같은 명령을 실행해야 그는 임베디드 클라이언트는 그래서 쉬를 사용하여 아라고 클라이언트에, 떠들썩한 파티를 사용하여 우분투 서버에이 시도 :
이 포함 된 라인을 초래ssh -n -o stricthostkeychecking=no [email protected] sed -i 's/PART="$1"/PART="A"/' flash.sh
:
export PART=A"$1"
대체 명령은 내부에 머물 필요 작은 따옴표는 큰 따옴표가 리터럴로 전달되도록하거나 두 문자열에 큰 따옴표를 유지하는 더 좋은 방법 일 수 있습니까? 이것은 $1
이 비어있는 것처럼 무시되고있는 것처럼 보이고 "A"
은 A
으로 전달되고 PART=
끝을 대체합니다. 단일 및 이중 따옴표로 명령을 캡슐화하려고 시도했습니다.이 두 가지 결과는 같은 결과를 가져옵니다. 또한 백 슬래시로 따옴표를 이스케이프 처리했습니다. 동일한 결과입니다. 나는 이것이 단순하게 이해하지 못하는 sh와 함께 인용 확장을 가진 어떤 것이라고 생각한다. 아니면 ssh로 이해할 수없는 것입니다.
비슷한 다른 스레드를 읽었지만 원격으로 명령을 실행하기 위해 ssh를 사용하지 않았습니다. 나는 sed에서 더 이상 초보자가 아니지만이 사람은 나를 위해 꽤 수수께끼가되었다.
이 방법은 완벽하게 작동합니다!감사합니다 Dimitre! 한 번에이 솔루션에 가깝지만 세 줄의 백 슬래시를 사용하여 $ 문자를 이스케이프 처리하는 방법에 대해 알지 못했습니다. 다시 한번 감사드립니다. – delliottg