1

所以我这样做了:

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

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

但是,当我执行wtfman它而不是返回

Vim: Warning: Output is not to a terminal

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

4

2 回答 2

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
}
于 2013-10-17T23:25:42.373 回答
0

而不是$($command),只是写$command。这样,命令将继承 shell 的标准输出,而不是让调用它的 shell 捕获它的标准输出。

于 2013-10-17T23:25:30.827 回答