1

linting shell 脚本时如何删除 shellcheck 的警告“SC2154”?

#!/bin/bash
set -euo pipefail
IFS=$'\n\t'

echo "proxy=$http_proxy" | sudo tee -a /etc/test.txt

警告是“SC2154:http_proxy 已被引用但未分配”。

编辑:我想使用 sudo 将环境变量“http_proxy”写入 test.txt 文件。

4

2 回答 2

3

正如您尝试使用(可能)未初始化变量的警告的 wiki 页面上的$http_proxy详细描述。

您可以通过注释禁止任何警告:

# shellcheck disable=SC2154
echo "proxy=$http_proxy" | ...

但是,更好的解决方案是修复脚本。在这里,您似乎假设http_proxy是一个环境变量。如果是这种情况,您应该遵守命名约定并将其命名为HTTP_PROXY. Shellcheck 遵守此约定,不会显示警告。

于 2020-05-27T06:42:59.080 回答
1

或者,要抑制警告,http_proxy如果它为 null 或未设置,您可以显式扩展为空:

echo "proxy=${http_proxy:-}"
于 2020-05-27T06:55:14.480 回答