我对终端还算陌生。我目前正在尝试在 .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
可用,并且该字符串将在 中可用。变量和称为前两个$1
Hello, wanna play tag?
$2
$1
$2
位置参数。
然后,您可以在函数中使用这两个变量,如下所示:
reply () {
osascript -e 'tell application "Messages" to send "'"$2"'" to buddy "'"$1"'"'
}
$1
and周围奇怪的引号$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"
}