Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何从bash函数打开编辑器?_Linux_Bash_Nano - Fatal编程技术网

Linux 如何从bash函数打开编辑器?

Linux 如何从bash函数打开编辑器?,linux,bash,nano,Linux,Bash,Nano,我有一个打开编辑器的简单函数: open_an_editor() { nano "$1" } 因此,如果使用参数/script.sh“A value”调用脚本,函数将直接使用该参数并立即回显7个字节。但如果在没有参数的情况下调用/script.sh-nano应该会弹出。如果需要从函数中获取输出并存储在变量中,只需显示文件中的内容即可 open_an_editor() { cat "$1" } smth=$(open_an_editor file.txt) 如果您需要的输入是已编

我有一个打开编辑器的简单函数:

open_an_editor() { nano "$1" }
因此,如果使用参数
/script.sh“A value”
调用脚本,函数将直接使用该参数并立即回显7个字节。但如果在没有参数的情况下调用
/script.sh
-nano应该会弹出。

如果需要从函数中获取输出并存储在变量中,只需显示文件中的内容即可

open_an_editor()
{
    cat "$1"
}
smth=$(open_an_editor file.txt)

如果您需要的输入是已编辑的文件,那么在执行
打开编辑器文件名后,显然需要
cat filename

如果确实需要编辑器的输出,则需要交换stderr和stdin,即:
nano“$1”3>&11>&22>&3


如果您需要“友好”的用户输入,请参阅如何使用如果您只想让用户输入一个值,那么
读取
就足够了:

OLDIFS="$IFS"
IFS=$'\n'
read -p "Enter a value: " -e somevar
IFS="$OLDIFS"
echo "$somevar"

您希望从编辑器得到什么样的输出?您想做什么?更清楚一点我想你指的是\value:)你可以使用'tr'在把它传递给你选择的编辑器之前正确地转义空格。它不是编辑器、VFS和底层文件系统。对于文件名,空格和非空格一样可以接受,但它们必须转义。tr''\'可能是一个开始。非常感谢!我应该通过谷歌来了解这种交换到底做了什么?:)交换类似于
tmp=a;a=b;b=tmp语句交换
a
b
的值。这里,文件描述符3是
tmp
,1、2是
a
b
。1是stdout,2是stderr。除了@Alok-0的注释外,1,2是预定义的文件描述符,分别指向标准输入、输出和错误-其他文件描述符通常是通过调用编程语言中的open()函数“生成”的。然而,在交换示例中,fd 3-被定向到fd 1,因此可以在没有关于它们的链接的情况下使用,作为奖励,您可以通过
ls/proc/$$/fd
查看当前shell中的“已在使用”文件描述符
OLDIFS="$IFS"
IFS=$'\n'
read -p "Enter a value: " -e somevar
IFS="$OLDIFS"
echo "$somevar"