1
SSH를 사용하여 여러 명령을 실행하려고하지만 구문이 올바로 표시되지 않습니다. 누군가 제게 약간의 도움을 주시겠습니까? 그들은 로컬로 실행되는 경우ssh를 통해 여러 명령 실행
ssh "$USER"@"$IP" " \
CURRENT_HOSTNAME=$(hostname); \
sed -c -i 's/\($TARGET_KEY *= *\).*/\1$REPLACEMENT_VALUE/' $DISTRO_FILE; \
sed -c -i 's/$CURRENT_HOSTNAME/$REPLACEMENT_VALUE/' $CONFIG_FILE; \
hostname $REPLACEMENT_VALUE"
그 명령은 잘 작동,하지만 난 SSH를 통해 실행하려고 할 때 다음과 같은 오류가 점점 오전 :
sed: -e expression #1, char 0: no previous regular expression
오류가
sed -c -i 's/$CURRENT_HOSTNAME/$REPLACEMENT_VALUE/' $CONFIG_FILE; \
에서 오는 것 같다
SSH 자체에서 이전에 설정 한 $ CURRENT_HOSTNAME을 (를) 읽으려고 시도하기 때문에. 그 변수를 다시 읽는 방법을 모르겠습니다. 어떤 단서를 주시겠습니까?
이 작동ssh "$USER"@"$IP" "CURRENT_HOSTNAME=\$(hostname);
sed -c -i \"s/\($TARGET_KEY *= *\).*/\1$REPLACEMENT_VALUE/\" $DISTRO_FILE;
sed -c -i \"s/\$CURRENT_HOSTNAME/$REPLACEMENT_VALUE/\" $CONFIG_FILE;
hostname $REPLACEMENT_VALUE"
:
코드 편집! 고마워요!
감사합니다.
감사합니다. 조나단, 나는 진전을 보였습니다. 나는 지금 그 생각을 이해한다. 로컬 변수 (로컬 bash 스크립트에서), 리모트 변수 (CURRENT_HOSTNAME) 및 sed가 큰 따옴표를 사용하기 때문에 문제가 발생합니다. 위의 코드를 업데이트하고 있습니다. – user1777907
나는 작동하도록 코드를 가지고있다. 고마워, 조나단! – user1777907