求Sketch CLI在Fish Shell下的初始化等效命令及传参方法
Fish Shell 下的 Sketch CLI 初始化脚本解决方案
我刚好研究过Fish和Sketch CLI的适配,这就帮你把原Shell脚本转换成Fish能用的版本,顺便把参数传递的坑给你讲清楚:
完整的Fish脚本代码
#!/usr/bin/env fish # 找到Sketch应用的安装路径 set SKETCH (mdfind kMDItemCFBundleIdentifier == 'com.bohemiancoding.sketch3' | head -n 1) # 传递所有参数给sketchtool "$SKETCH/Contents/Resources/sketchtool/bin/sketchtool" $argv
关键改动说明
- Shebang替换:把原脚本的
#!/bin/sh换成Fish的标准开头#!/usr/bin/env fish,让系统用Fish来执行这个脚本。 - 变量赋值方式:Fish里用
set 变量名 (命令)来做命令替换,不需要加$前缀(这和Bash/Zsh不一样),所以原代码的SKETCH=$(...)改成set SKETCH (...)就能正常工作。 - 参数传递的核心差异:
- 原Bash里的
"$@"是用来传递所有脚本参数的写法,在Fish里对应的是$argv,而且不需要加引号——Fish会自动处理带空格、特殊字符的参数,直接用$argv就可以完美传递所有输入参数。 - 你之前尝试去掉引号、移除$都不对,本质是没搞清楚Fish和Bash在参数变量上的命名区别,Fish里没有
$@这个写法,统一用$argv来指代所有脚本参数。
- 原Bash里的
使用方法
- 把上面的代码保存成
sketchtool.fish文件 - 给脚本加执行权限:
chmod +x sketchtool.fish - 像原脚本一样使用,比如调用导出命令:
./sketchtool.fish export artboards your-sketch-file.sketch
内容的提问来源于stack exchange,提问作者TheJeff
相关产品推荐
相关产品推荐

