我知道在将变量传递给 sed 时,应该使用双引号。因此,当我使用 sed 显示给定行号的文件行时:
sed '894!d' cloud.cpp
Run Code Online (Sandbox Code Playgroud)
它有效,但由于我也想将行号 894 作为变量传递给 sed,所以我尝试了:
lnum=894
sed "$lnum!d" cloud.cpp
Run Code Online (Sandbox Code Playgroud)
但它不起作用,甚至具有相同语法的单引号也不起作用:
sed "894!d" cloud.cpp
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,我如何仍然将变量传递给 sed。
当我向 telnet 提供用户名和密码进行登录时,它会在执行以下命令后自动关闭:
echo password | telnet mymachine -l mysuername
Run Code Online (Sandbox Code Playgroud)
控制台输出:
Connected to mymachine.
Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)
然后连接关闭。有没有一种方法可以保持连接,同时仍然一次为登录提供用户名和密码?
更新:我根据接受的答案写了一个别名,每次登录时无需输入用户名和密码:
alias logon='rm loginscript; echo \#\!\/usr\/bin\/expect >> loginscript ; echo spawn telnet remotemachine -l username >> loginscript ; echo expect Password: >> loginscript ; echo send password"\\r" >> loginscript ; echo expect -- \{\$ \} >> loginscript ; echo interact >> loginscript; chmod 777 loginscript; ./loginscript'
Run Code Online (Sandbox Code Playgroud)