所以我这样做了:
function wtfman(){
local command="vi /the/path/file.txt"
$($command)
}
希望程序在该路径上打开vi
但是,当我执行wtfman
时,它会返回
Vim: Warning: Output is not to a terminal
我做错了什么?我如何改变这个功能,以便相应地打开vi而不仅仅是抱怨?即我想要一个存储在字符串中的命令,我想执行该字符串指定的命令。它适用于其他一切,但它不适用于vi(可能是因为vi的全屏性质?)
答案 0 :(得分:1)
您正在子shell中执行,而是使用eval
function wtfman(){
local command="vi /the/path/file.txt"
eval "$command"
}
或者只是......
function wtfman(){
local command="vi /the/path/file.txt"
$command
}
甚至只是......
function wtfman(){
vi /the/path/file.txt
}
答案 1 :(得分:0)
而不是$($command)
,只需撰写$command
即可。这样,该命令将继承shell的stdout,而不是由调用它的shell捕获它的stdout。