我无法回应使用bash脚本我使用的ssh

时间:2017-06-26 14:41:06

标签: bash shell

#!/bin/bash

read -p 'please enter the ssh server name: ' ssh_name
ssh ${ssh_name} 'bash' <<'EOF'
echo ${ssh_name}
exit
EOF

2 个答案:

答案 0 :(得分:1)

因为你在heredoc限制字符串周围放置了单引号,所以它不会扩展变量,因此它会尝试在服务器端进行变量扩展,而不设置该变量。

如果您想在本地扩展变量,请不要使用@Override public void onBackPressed() { Toast.makeText(this, "OnBackpressed fired", Toast.LENGTH_SHORT).show(); super.onBackPressed(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { //replaces the default 'Back' button action if(keyCode== KeyEvent.KEYCODE_BACK) { // something here onBackPressed(); } return true; } 周围的单引号:

EOF

这将在本地扩展read -p 'please enter the ssh server name: ' ssh_name ssh ${ssh_name} 'bash' <<EOF echo ${ssh_name} exit EOF ,然后ssh_name会在远程端看到已展开的字符串并echo

如果要将该变量传递给另一方,可以将其作为正在执行的命令的一部分:

echo

(虽然您不必更改变量的名称,但我只是强调它在远程端可用)。

here是关于heredocs和herestrings的好读物。

答案 1 :(得分:0)

因为你正在调用ssh的shell中设置了$ ssh_name,并且你试图从ssh会话本身回调$ ssh_name,它没有设置。

如果将echo语句移动到EOF之后或ssh语句之前,那么你会发现它工作得很好。