function - ZSH Alias 会触发终端通知程序,但不会触发生成它的命令
问题描述
好的,所以我几天前问了这个问题,但有点搞砸了,所以我删除了它,并打算再次尝试寻求帮助......
我的 .zshrc 中有一个别名;
alias gulp='gulp-notice'
这又会触发一个函数;
gulp-notice ()
{
notifier-around gulp "Gulp" "gulp $*"
}
进而触发此功能
notifier-around ()
{
GROUP_ID=$1
TITLE=$2
COMMAND=$3 $4 $5 $6 $7 $8 $9
terminal-notifier -title $COMMAND -message 'Finished' -appIcon https://s-media-cache-ak0.pinimg.com/564x/b5/5a/18/b55a1805f5650495a74202279036ecd2.jpg && terminal-notifier -title $COMMAND -message 'Complete' -appIcon https://s-media-cache-ak0.pinimg.com/564x/b5/5a/18/b55a1805f5650495a74202279036ecd2.jpg || terminal-notifier -title $COMMAND -message 'Failed' -appIcon https://media3.giphy.com/media/10ECejNtM1GyRy/200_s.gif
}
所以变量是这样计算的(使用 gulp-notice 函数)
GROUP_ID is gulp
TITLE is "Gulp" (without the quote marks)
COMMAND is "gulp $*" (the output without the quote marks)
现在我的问题是......当我过去在 BASH 中运行这个脚本时,它会执行 gulp 命令,并且终端通知程序会做这件事(告诉我 gulp 是失败还是成功)
gulp
gulp
会根据情况触发和必要的通知
gulp sass
gulp sass
会根据情况触发和必要的通知
现在我已经转移到 ZSH,脚本只是触发终端通知,没有别的。有人能指出我正确的方向吗,因为我不明白为什么两个终端应用程序之间的脚本应该如此不同
更新
我现在有工作代码,但我无法运行诸如 SASS 或 JS(gulp sass
或gulp js
)之类的 gulp 任务。我修改后的代码如下
notifier-around ()
{
GROUP_ID=$1
TITLE=$2
COMMAND="$3 $4 $5 $6 $7 $8 $9"
COMMAND_NO_WHITE_SPACE="$(echo -e "${COMMAND}" | sed -e 's/[[:space:]]*$//')" //strips the white space from the end of the VAR
PROGRESS="https://s-media-cache-ak0.pinimg.com/564x/b5/5a/18/b55a1805f5650495a74202279036ecd2.jpg"
FAIL="https://media3.giphy.com/media/10ECejNtM1GyRy/200_s.gif"
terminal-notifier -group "$GROUP_ID" -title "$TITLE" -message "Starting" -appIcon "$PROGRESS" && $COMMAND_NO_WHITE_SPACE && terminal-notifier -group "$GROUP_ID" -title "$TITLE" -message "Complete" -appIcon "$PROGRESS" || terminal-notifier -group "$GROUP_ID" -title "$TITLE" -message "Failure" -appIcon "$FAIL"
}
gulp-notice ()
{
notifier-around gulp "Gulp Build" "gulp $*"
}
alias gulp='gulp-notice'
关于如何让它识别附加任务的任何想法,因为我也无法运行gulp --tasks
......
解决方案
所以我终于修好了;
notifier-around ()
{
GROUP_ID="$1"
TITLE="$2"
COMMAND="$3"
COMMAND_NO_WHITE_SPACE="$(echo -e "${COMMAND}" | sed -e 's/[[:space:]]*$//')" //strips the white space from the end of the VAR
PROGRESS="https://s-media-cache-ak0.pinimg.com/564x/b5/5a/18/b55a1805f5650495a74202279036ecd2.jpg"
FAIL="https://media3.giphy.com/media/10ECejNtM1GyRy/200_s.gif"
terminal-notifier -group "$GROUP_ID" -title "$TITLE" -message "Starting" -appIcon "$PROGRESS" && "${=COMMAND_NO_WHITE_SPACE}" && terminal-notifier -group "$GROUP_ID" -title "$TITLE" -message "Complete" -appIcon "$PROGRESS" || terminal-notifier -group "$GROUP_ID" -title "$TITLE" -message "Failure" -appIcon "$FAIL"
}
gulp-notice ()
{
notifier-around gulp "Gulp Build" "gulp $*"
}
alias gulp='gulp-notice'
您会看到我正在删除尾随空格;
COMMAND_NO_WHITE_SPACE="$(echo -e "${COMMAND}" | sed -e 's/[[:space:]]*$//')"
因为这似乎引起了问题
您还会看到我更改"$COMMAND_NO_WHITE_SPACE"
为"${=COMMAND_NO_WHITE_SPACE}"
The ${=
is to split a variable by $IFS。这给了 ZSH 它需要识别的能力 我正在尝试向我的命令添加一个参数
推荐阅读
- python - 为 Google Analytics Reporting API 设置 HTTP 代理
- xamarin - 从 firebase Xamarin 查询数据
- python - 用python写一个关于list中sum的简单程序
- reactjs - Django 和 React 认证系统
- r - 如何使用 Nest 和 mutate 从训练集中创建模型,然后将其应用于 R 中的测试数据(tidymodels)
- javascript - 在 geolocation.getCurrentPosition 中保存对象数据(axios 请求的异步函数)(javascript)
- c++ - 为什么 curl_easy_cleanup() 会抛出异常?
- c# - C# for 循环跳过一步
- python - 尝试在列中创建具有多个输入的可用性表
- python - 使用 MATLAB 代码中的 Numpy、Matploblib 3D 说明正态分布