跳转到主内容
极星编程网:以代码为星,赴技术山海!

VSCode快速生成Shell脚本骨架_集成常用环境检查逻辑

Shellman是VSCode中最轻量、响应最快的Shell脚本骨架生成工具,内置check_deps、check_root等环境检查模板,安装后通过Ctrl+Shift+P调用Insert Snippet即可快速插入含shebang、set -euo pipefail及依赖校验的脚本骨架。 直接用 Shellman 插件插入预设模板 Shellman 是目前 VSCode 里最轻量、响应最快的 Shell 脚本骨架生成工具,它不依赖外部 CLI,也不需要配置 launch.json 或 shellcheck 路径,装完即用。关键在于它内置了带环境检查逻辑的常用模板,比如
check_deps
、
check_root
、
check_argc
等。 操作步骤很简单: 安装 Shellman 扩展(搜索
shellman
,作者是
hongyuanjun
) 新建一个
.sh
文件,按
Ctrl+Shift+P
→ 输入
Shellman: Insert Snippet
→ 回车 从列表里选
bash_header_with_checks
(含 shebang、set -euo pipefail、基础参数校验)或
bash_script_with_deps
(额外加入
command -v
检查依赖项) 生成的骨架会自动包含类似这样的逻辑:
#!/bin/bash set -euo pipefail

Check if running as root

[[ $EUID -ne 0 ]] && { echo "Error: This script must be run as root." >&2; exit 1; }

Check required commands

for cmd in curl jq sed; do command -v "$cmd" >/dev/null 2>&1 || { echo "Error: $cmd is not installed." >&2; exit 1; } done

手动补全时别漏掉 set -euo pipefail 和变量引号 很多人复制模板后只改业务逻辑,却忽略两个致命细节:一是没启用严格模式,二是变量未加双引号。结果脚本在空格路径、空变量、管道失败时静默出错,排查成本翻倍。 必须写在脚本开头紧接 shebang 后面:
set -e
:任一命令非零退出立即终止(但注意
if
、
while
内部不触发)
set -u
:引用未声明变量时报错(避免
$USER_NAME
写成
$USERNAME
还继续跑)
set -o pipefail
:让
a | b | c
中任意环节失败,整个管道返回失败码(否则默认只看
c
的退出码) 所有变量引用必须包在双引号里:
"$VAR"
,不是
$VAR
,也不是
'$VAR'
错误示例:
cp $SRC $DST
→ 正确应为:
cp "$SRC" "$DST"
。ShellCheck 会报
SC2086
,但如果你没开
shellcheck.run
为
onType
,就看不到提示。 VSCode 1.118 微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。 下载 VSCode 里快速验证环境检查逻辑是否生效 写完骨架别急着填业务代码,先本地验证检查逻辑是否真起作用。VSCode 集成终端(
Ctrl+`
)就是最直接的测试场,不用反复
chmod +x
+
./script.sh
。 验证要点: 删掉某个依赖命令(如临时重命名
jq
),运行脚本看是否立刻报
Error: jq is not installed
用普通用户执行带
[[ $EUID -ne 0 ]]
的脚本,确认提示
This script must be run as root
并退出 传空参数进去,比如
./script.sh ""
,检查
[[ -z "$1" ]]
分支是否触发 注意:如果终端里执行没反应,先确认右下角语言模式是
Shell Script
(不是
Plain Text
),否则
Ctrl+`
呼出的终端不会自动 cd 到当前文件所在目录——你可能在错的路径下测试。 自定义模板要避开 . vscode /settings.json 全局污染 如果你习惯把常用检查逻辑(比如统一检查
/proc/sys/net/ipv4/ip_forward
是否开启)做成自己的 snippet,别直接往
.vscode/settings.json
里硬塞
shellman.snippets
配置。那会导致整个工作区所有
.sh
文件都加载该模板,干扰协作和 CI 流水线。 更安全的做法是: 把自定义 snippet 存为单独 JSON 文件,比如
~/.vscode/snippets/shell-checks.code-snippets
在该文件中用
"scope": "shellscript"
限定作用域 每个 snippet 的
prefix
取明确名称,如
check_ip_forward
,避免和 Shellman 默认前缀冲突 VSCode 会自动合并用户级 snippets,无需重启,输入前缀 + Tab 即可触发 真正容易被忽略的是:自定义 snippet 里的换行和缩进必须用真实制表符或空格,不能靠 VSCode 自动对齐——否则粘贴出来格式错乱,
set -euo pipefail
可能被缩进到
if
块里,变成无效语句。

相关文章