【问题标题】:How to write bash function to not require quotation marks?如何编写不需要引号的bash函数?
【发布时间】:2020-08-20 18:07:21
【问题描述】:

这是一个非常简单的 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 时它们是不可见的。

【问题讨论】:

  • 在函数中使用"$@"获取所有参数。
  • 取决于您对“一切”的含义注意外壳扩展 *

标签: string bash function escaping


【解决方案1】:

使用$@ 获取所有参数。

function n() { 
   echo -e "$@" >> file.txt;
}

请注意,shell 在调用命令/函数之前 会在命令行上执行分词、通配符处理、大括号扩展和其他扩展。除了将它们放在引号中之外,没有办法告诉它应该单独留下参数。因此,如果您在参数中的一个单词之间放置多个空格,除非您引用它们,否则它们将被折叠成一个空格。如果匹配任何文件名,通配符将被扩展。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多