Revert 9cfa9fdb2964a11b58151b22dff9cbb2e920e9d6...cac27831e1fd29f27821133b6eaebb30df70550a on SC2154

austinbutler
2022-07-06 16:23:29 -07:00
parent cac27831e1
commit 7341de17e4

@@ -1,6 +1,63 @@
RUN \ ## var is referenced but not assigned.
export http_proxy=${http_proxy}; \
export https_proxy=${https_proxy}; \ ### Problematic code:
dnf -y upgrade; \
dnf -y install libXext libXrender libXtst xorg-x11-server-Xvfb fontconfig unzip sudo telnet; \ ```sh
dnf -y clean all var=name
n=42
echo "$var_$n.jpg" # overextended
```
or
```sh
target="world"
echo "hello $tagret" # misspelled
```
or
```sh
echo "Result: ${mycmd -a myfile}" # trying to execute commands
```
### Correct code:
```sh
var=name
n=42
echo "${var}_${n}.jpg"
```
or
```sh
target="world"
echo "hello $target"
```
or
```sh
echo "Result: $(mycmd -a myfile)"
```
### Rationale:
ShellCheck has noticed that you reference a variable that is not assigned. Double check that the variable is indeed assigned, and that the name is not misspelled.
Note: This message only triggers for variables with lowercase characters in their name (`foo` and `kFOO` but not `FOO`) due to the standard convention of using lowercase variable names for unexported, local variables.
### Exceptions:
ShellCheck intentionally does not attempt to figure out runtime or dynamic assignments like with `source "$(date +%F).sh"` or `eval var=value`. See [[SC2034]] for an extended discussion of why this is the case.
If you know for a fact that the variable is set, you can use `${var:?}` to fail if the variable is unset (or empty), initialize it to a default value if uninitialized with `: "${var:=}"`, or explicitly initialize/declare it with `var=""` or `declare var`. You can also disable the message with a [[directive]].
---
## Read more:
POSIX - Parameter expansion:
* https://stackoverflow.com/a/16753536/2309247
* http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02