问题描述
这是一个非常简单的bash函数,它接收一条消息并将其附加到file.txt的末尾。
function n() {
message=$1 &&
echo -e "$message" >> file.txt;
}
要将文本添加到此文件中,我只需运行n "text I want to add"
这一切都很好,但是有没有办法不需要引号呢?相反,该函数之后的所有内容都将被视为消息。
n Everything I write here,after the n,would be saved to the file.txt
基本上,我要告诉bash停止读取n
之后的任何内容,这可能是一个功能,而只能将其作为字符串读取。我可以预见,这是通过与echo
不同的功能实现的,或者可以通过在n
的定义中加上引号来实现,以便在调用n
时它们不可见。>
解决方法
使用$@
获取所有参数。
function n() {
echo -e "$@" >> file.txt;
}
请注意,shell在调用命令/功能之前,在命令行 上执行了单词拆分,通配符处理,花括号扩展和其他扩展。除了将它们放在引号中之外,没有其他方法可以告诉他们这些参数应该单独放置。因此,如果您在参数中的一个单词之间放置多个空格,除非您引用它们,否则它们将被折叠为一个空格。如果通配符与任何文件名匹配,它们将被扩展。