跳到主要内容

撸了个七牛云图床神器

· 阅读需 3 分钟

图床神器,也就是在Markdown写作时方便上传图片到云上并获取外链。Mac上有图床神器iPic,貌似挺不错的,不过只支持Mac。其实,图床神器的功能并不复杂,流程大致如下:

基本上用Shell脚本就能搞定。

项目地址:lpic:Linux下的七牛云图床神器

与七牛云交互的部分直接调用官方提供的开发者工具:qrsctl,使得开发方便了许多。不过,由于对Bash编程不够熟练,在写这个小工具时还是遇到了一些问题。由于时间比较仓促,写得比较简单,不够awesome,不够robust,但够用即可~简单记录一下。

提取文件后缀:${file##*.}

  • ##表示删除左侧最长的匹配(贪婪),#表示删除左侧最短匹配(非贪婪)
  • %%表示删除右侧最长的匹配(贪婪),%表示删除右侧最短匹配(非贪婪)

依稀记得在鸟哥Linux私房菜里看过,不用的话有点难记。

还有更实用的是替换,比如说将$var里的xyz字符替换为abc可以用${var//xyz/abc}。其中的//表示全部替换,如果换成/就只替换第一个。这里容易和sedvim里的替换搞混淆,写成${var//xyz/abc/}了,这样就替换成abc/了。

Bash里的函数虽说可以有返回值,也就是可以return,但只能return 0~255之间的整数,如果return -1实际是return 255,return 256实际是return 0。这一点和一般的编程语言不一样,所以,Bash函数基本就返回状态码,尽量不要用于返回数据。

Bash给变量赋值时,变量名前不需要$,只是取出它的值时需要$,这一点和PHP还是不一样的。

在用read的时候需要注意,-p参数是显示提示,但在提示内容里使用变量时还是需要留心点的。比如:

$ var="你 好"
$ read -p "x""$var""y" ans
x你 好y
$ read -p "x"$var"y" ans
bash: read: `好y': 不是有效的标识符

注意到上面两种写法的不同了吗?如果提示里有空格,后面的部分会被视为接收输入的变量。另外,zsh的read没有-p