小编pho*_*les的帖子

将变量传递给 sed 的问题

我知道在将变量传递给 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。

shell sed quoting

5
推荐指数
2
解决办法
5964
查看次数

使用 echo 提供用户名和密码时不要关闭 telnet

当我向 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)

login autologin echo telnet

4
推荐指数
1
解决办法
1383
查看次数

标签 统计

autologin ×1

echo ×1

login ×1

quoting ×1

sed ×1

shell ×1

telnet ×1