Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 通过SSH在远程shell脚本执行中分配变量_Linux_Bash_Shell_Ssh_Amazon Ec2 - Fatal编程技术网

Linux 通过SSH在远程shell脚本执行中分配变量

Linux 通过SSH在远程shell脚本执行中分配变量,linux,bash,shell,ssh,amazon-ec2,Linux,Bash,Shell,Ssh,Amazon Ec2,我试图通过SSH在远程服务器上执行一些shell脚本 下面给出了一个代码示例: ssh -i $KEYFILE_PATH ubuntu@$TARGET_INSTANCE_IP "bash" << EOF #!/bin/bash cat /home/ubuntu/temp.txt string=$(cat /home/ubuntu/temp.txt ) echo $string EOF ssh-i$KEYFILE\u PATH ubuntu@$TARGET\u INSTANCE\u

我试图通过SSH在远程服务器上执行一些shell脚本

下面给出了一个代码示例:

ssh -i $KEYFILE_PATH ubuntu@$TARGET_INSTANCE_IP "bash"  << EOF
#!/bin/bash
cat /home/ubuntu/temp.txt
string=$(cat /home/ubuntu/temp.txt )
echo $string
EOF

ssh-i$KEYFILE\u PATH ubuntu@$TARGET\u INSTANCE\u IP“bash”您需要将Here doc的内容设置为文本,否则它们将在当前shell中展开,而不是在所需的远程shell中展开

报价
EOF

ssh .... <<'EOF'
...
...
EOF

ssh 您需要将Here doc的内容设置为literal,否则它们将在当前shell中展开,而不是在所需的远程shell中展开

报价
EOF

ssh .... <<'EOF'
...
...
EOF

ssh 您应该能够简单地执行以下操作:

ssh -i $KEYFILE_PATH ubuntu@$TARGET_INSTANCE_IP "bash"  <<'_END_'
    cat /home/ubuntu/temp.txt
    string=$(cat /home/ubuntu/temp.txt)
    echo $string
_END_

ssh-i$KEYFILE\u PATH ubuntu@$TARGET\u INSTANCE\u IP“bash”您应该能够简单地执行以下操作:

ssh -i $KEYFILE_PATH ubuntu@$TARGET_INSTANCE_IP "bash"  <<'_END_'
    cat /home/ubuntu/temp.txt
    string=$(cat /home/ubuntu/temp.txt)
    echo $string
_END_

ssh-i$KEYFILE\u PATH ubuntu@$TARGET\u INSTANCE\u IP“bash”不需要中间shell(假设您在远程系统上使用
bash
)。 此外,您不必使用中间文件。只需传递一个多行命令:

ssh-i$KEYFILE\u PATH ubuntu@$TARGET\u INSTANCE\u IP'
cat/home/ubuntu/temp.txt
字符串=$(cat/home/ubuntu/temp.txt)
echo$字符串
'

注意:我使用单引号来防止在本地shell上求值。

不需要中间shell(假设您在远程系统上使用
bash
)。 此外,您不必使用中间文件。只需传递一个多行命令:

ssh-i$KEYFILE\u PATH ubuntu@$TARGET\u INSTANCE\u IP'
cat/home/ubuntu/temp.txt
字符串=$(cat/home/ubuntu/temp.txt)
echo$字符串
'

注意,我使用单引号来防止在本地shell上进行求值。

尝试了!!不走运@静默\u
/home/ubuntu/temp.txt
文件在哪里?本地还是远程?它在远程服务器上..我认为这是一个调整。。它正在工作。。谢谢..试过了!!不走运@静默\u
/home/ubuntu/temp.txt
文件在哪里?本地还是远程?它在远程服务器上..我认为这是一个调整。。它正在工作。。谢谢