使用bash $命令执行vi

时间:2013-10-17 23:21:37

标签: linux bash shell terminal vi

所以我这样做了:

function wtfman(){
  local command="vi /the/path/file.txt"
  $($command)
}

希望程序在该路径上打开vi

但是,当我执行wtfman时,它会返回

Vim: Warning: Output is not to a terminal

我做错了什么?我如何改变这个功能,以便相应地打开vi而不仅仅是抱怨?即我想要一个存储在字符串中的命令,我想执行该字符串指定的命令。它适用于其他一切,但它不适用于vi(可能是因为vi的全屏性质?)

2 个答案:

答案 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。