微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何编写bash函数不需要引号?

如何解决如何编写bash函数不需要引号?

这是一个非常简单的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在调用命令/功能之前,在命令行 上执行了单词拆分,通配符处理,花括号扩展和其他扩展。除了将它们放在引号中之外,没有其他方法可以告诉他们这些参数应该单独放置。因此,如果您在参数中的一个单词之间放置多个空格,除非您引用它们,否则它们将被折叠为一个空格。如果通配符与任何文件名匹配,它们将被扩展。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。