#!/bin/bash
read -p 'please enter the ssh server name: ' ssh_name
ssh ${ssh_name} 'bash' <<'EOF'
echo ${ssh_name}
exit
EOF
答案 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语句之前,那么你会发现它工作得很好。