如何在函数内部添加echo

如何在函数内部添加echo

我对终端还算陌生。我目前正在尝试在 .bash_profile 中创建一个小函数,该函数可以从终端向特定联系人发送消息(无需打开消息应用程序)。我的目标是能够使用“回复“插入消息””命令向该函数中放置的特定联系人发送消息。我一直在尝试摆弄 echo ,因为我知道它可以插入文本,但我没有找到运气。我不知道将它放在函数中的哪里,以便我只能插入消息。

function reply() {
        osascript -e 'tell application "Messages" to send "insert message" to buddy "insert contact"'
        }

简单来说。我确实知道

osascript -e 'tell application "Messages" to send "insert message" to buddy "insert contact"'

自从我在终端上尝试后,命令就有效了。但我必须手动将光标移动到“插入消息”和“插入联系人”,这就是为什么我试图将其设为函数或别名以加速该过程。

我会尽力回答任何问题。先感谢您。

答案1

看起来您想为函数提供两个命令行参数,即消息和要将消息发送到的人员的姓名:

reply myFriend002 'Hello, wanna play tag?'

当您的函数以这种方式调用时,该字符串将在该函数中myFriend002可用,并且该字符串将在 中可用。变量和称为前两个$1Hello, wanna play tag?$2$1$2位置参数

然后,您可以在函数中使用这两个变量,如下所示:

reply () {
    osascript -e 'tell application "Messages" to send "'"$2"'" to buddy "'"$1"'"'
}

$1and周围奇怪的引号$2是为了打破单引号字符串,双引号每个变量的扩展,然后继续单引号字符串。

你也可以使用

reply () {
    osascript -e "tell application \"Messages\" to send \"$2\" to buddy \"$1\""
}

...这可能更容易阅读。

-e或者,如果您想变得更奇特,请先为单独的选项创建值osascript

reply () {
    local script

    printf -v script \
        'tell application "Messages" to send "%s" to buddy "%s"' "$2" "$1"

    osascript -e "$script"
}

相关内容