VSCode 编写 Shell 脚本

丌官向荣
2023-12-01

VSCode 编写 Shell 脚本

用到的插件:

  • shellman: 语法提示
  • shell-format: 格式化
  • shellcheck: 语法错误检查
  • Remote-WSL(可选): 远程打开WSL(子系统) 上的目录, 运行 shell

shellman

直接从应用市场安装即可

shell-format

前提:

  • shell-format依赖于 shfmt

  • shell-format会调用本地的 shfmt 可执行文件.

  • 如果要使用 shell-format, 必须要下载 shfmt

  • shfmt的各个版本在发行页

使用:

  1. 比如下载 shfmt_v3.0.0-beta1_windows_amd64 版本

  2. 把文件名重命名短一点, 然后放到 ‪D:\App\shfmt_v3.0.0.exe 目录下

  3. 从VSCode的商店安装 shell-format

  4. 打开配置文件 setting.json 添加如下配置:

    "shellformat.path": "D:\\App\\shfmt_v3.0.0.exe", 
    "shellformat.flag": "-i=2 -sr -kp -ci",
    

    shellformat.path 用来指定 shfmt 的路径

    shellformat.flag 表示功能配置. 具体内容参考 shfmt

    # like -i=4
    indent_style = space
    indent_size = 4
    
    shell_variant      = posix # like -ln=posix
    binary_next_line   = true  # like -bn
    switch_case_indent = true  # like -ci
    space_redirects    = true  # like -sr
    keep_padding       = true  # like -kp
    

shellcheck

前提:

使用前说明:

  • 在 shellcheck 的可执行文件中, 也包含 windows 版本, 但是不知道为什么不可用.
  • 将 shellcheck的 Linux 版本安装到 WSL(子系统) 中. 然后配置使用 WSL 中的shellcheck

使用:

  1. 安装 WSL – 具体内容可以百度

    1. 控制面板 中找到 启用或关闭WIndows功能
    2. 在列表的最下面找到 适用于 Linux 的 Windows 子系统, 在前面的 打勾确定.
    3. 电脑会提示重启.
    4. 重启后, 在 应用商店 里搜索 Linux , 选择 Ubuntu 安装.
    5. 添加用户, 设置密码. root密码可以用 sudo passwd root 来设置.
  2. 下载 shellcheck 的 Linux 版本, 放在D盘下面, 路径为: ‪D:\shellcheck-stable.linux.x86_64.tar.xz

  3. 开始 菜单打开 Ubuntu , 从 Windows 中复制到 Linux 中 /usr/local/bin

    sudo cp /mnt/d/shellcheck-stable.linux.x86_64.tar.xz /usr/local/bin
    
  4. 解压 shellcheck-stable.linux.x86_64.tar.xz

    sudo xz -d shellcheck-stable.linux.x86_64.tar.xz
    sudo tar -xvf shellcheck-stable.linux.x86_64.tar
    

    要解压两边

  5. 解压后得到 shellcheck-stable 目录, 里面有三个文件

    LICENSE.txt  README.txt  shellcheck
    
  6. shellcheck 移动到 /usr/local/bin 目录下

    mv /usr/local/bin/shellcheck-stable /usr/local/bin
    
  7. 从 VSCode 安装 shellcheck 的插件

  8. 修改配置文件 setting.json

    "shellcheck.enable": true,
    "shellcheck.useWSL": true,
    

    也可以通过可视化配置.

Remote-WSL(可选)

运行 shell 脚本的方法有很多, 用 git 中的 bash 也是很好的选择.

Remote-WSL的作用就像是在 Linux 上安装一个 VSCode, 直接编辑 Linux 上的文件.

错误提示:

Syntax error: Bad for loop variable

原因:

从 ubuntu 6.10 开始,ubuntu 就将先前默认的 bash shell 更换成了 dash shell;其表现为 /bin/sh 链接倒了 /bin/dash 而不是传统的 /bin/bash。

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 12 14:29 /bin/sh -> dash

所以在使用 sh 执行检测的时候实际使用的是 dash,而 dash 不支持这种 C 语言格式的 for 循环写法。

解决办法:

  1. 将默认 shell 更改为 bash。(bash 支持 C 语言格式的 for 循环)

    sudo dpkg-reconfigure dash
    

    在选择项中选 No

  2. 直接使用 bash :

    bash -n xxx.sh
    
  3. 为了确保 shell 脚本的可移植性,直接更改 shell 脚本,使用 shell 支持的 for 循环格式:

    for a in `seq $num`
    
 类似资料: