我正在尝试使用 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"
这行得通!非常感谢!
谢谢。