bash 技巧常用常新

/images/bash.png

bash 中有很多的命令,很多的技巧,通过不同的 pipeline(管道) 组合之后那更是五花八门,这里整理几个常用的和大家分享。

1、常用的参数导出为常量,方便下次使用

export api_token=2deba25d13c17cfcfa20679fb1f8a3e3

解释

  • export 后的变量可以在此shell 及后续开启的子 shell 中都生效

2、多用循环就不需要再去写代码了

for mac in '30:9C:23:B1:CD:59' '30:9C:23:B1:CF:94' '30:9C:23:B1:F6:B2' '30:9C:23:B1:F6:CA'
do
    echo go with ${mac}
    curl -X GET \
    http://172.21.2.21:8806/api/v1/cameras \
    -H 'Content-Type: application/json' \
    -H 'cache-control: no-cache' \
    -H "Authorization: Bearer ${api_token}" \
    -H "user-mac: ${mac}"
done

解释

  • ${var_name} 可以引用之前赋值的环境变量 var_name
  • for in do done这个模式可以用来循环执行某些命令

3、图片什么的base64太麻烦了,直接嵌入到命令行更好

curl -X POST \
http://172.16.2.70:5638/api/faces \
-H "Authorization: Bearer ${api_token}"" \
-H 'Content-Type: application/json' \
-d '{
  "photos": [
      "'$(base64 -i ~/Desktop/x.jpg)'"
  ],
  "person": "Alice",
  "typeId": "67"
}'

解释

  • base64 命令在不同平台下参数不同,这里是在 macos 下的,直接把当前用户桌面上的 x.jpg 转成对应的 base64 编码字符串
  • 嵌入命令到 curl 的 post 请求的data 数据段时由于大多数不需要转义,但是嵌入命令需要转移,那么用支付串连接机制连接起来即可。

4、更多技巧不断更新中

echo 'hello world'

解释

  • 解释1
  • 解释2