用这个grep它显示了我使用的命令:
ssh root@107.170.70.100
使用此输出:
import pandas as pd
d = pd.read_excel(r"excel_file.xlsx",index_col=[0,1]).to_dict(orient='index')
for key in d:
d[key] = d[key].values()[0]
print d
我希望输出直接作为命令执行而不是打印。 我该怎么办?
答案 0 :(得分:3)
原则上,这可以通过使用$()
格式来完成,所以
$(history | grep "ssh root" | head -1| cut -c6-)
应该按照你的要求去做。但是,我不认为这样做是明智的,因为这将自动执行由grep
产生的命令,所以如果你犯了错误,可能会发生很多坏事。相反,我建议在重新执行之前检查您的结果。 bash
历史有很多很好的快捷方式来处理这类事情。举个例子,想象一下:
> history | grep "ssh root"
756 ssh root@107.170.70.100
您可以通过键入
轻松地在第756行调用此命令!756
这绝对更安全。希望这会有所帮助。
答案 1 :(得分:1)
理想情况下,您使用$(cmd)
语法而不是`cmd`
语法。这样可以更容易地嵌套子壳以及跟踪正在发生的事情。
除此之外,如果删除echo语句,它将运行脚本:
# Prints out ls
echo $( echo ls )
# Runs the ls command
$( echo ls )
答案 2 :(得分:0)
使用eval。
$ eval `history | grep "ssh root" | head -1| cut -c6-`
来自eval command in Bash and its typical uses:
eval
将一个字符串作为其参数,并对其进行评估,就像在命令行中键入该字符串一样。
Bash手册(https://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Builtins.html#Bourne-Shell-Builtins)
EVAL
eval [arguments]
将参数连接成一个命令,然后读取并执行该命令,并将其退出状态作为eval的退出状态返回。如果没有参数或只有空参数,则返回状态为零。