A for loop over command output (e.g. $(ls ...) or backticks) splits on whitespace and can break on filenames with spaces
or glob characters.
Prefer globs (e.g. for f in dir/*) or find (e.g. find . -name '*.mp3' -exec some command {} \;) instead.
Non-Compliant Code Examples
#!/bin/bash
for f in $(ls);doecho"$f";donefor g in `ls -A`;doecho"$g";donefor h in $(ls 2>/dev/null);doecho"$h";done
Compliant Code Examples
#!/bin/bash
ls
for f in ./*.txt;doecho"$f";donefind . -name '*.mp3' -exec some command{}\;whileIFS=read -r -d '' f;doecho"$f";done < <(find . -maxdepth 1 -print0)
シームレスな統合。 Datadog Code Security をお試しください
Datadog Code Security
このルールを試し、Datadog Code Security でコードを解析する
このルールの使用方法
1
2
rulesets:- bash-code-quality # Rules to enforce Bash code quality.