Linux 如何从bash函数打开编辑器?
我有一个打开编辑器的简单函数: open_an_editor() { nano "$1" }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) 如果您需要的输入是已编
因此,如果使用参数
/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"