Bash 1.0.2

v1.0.0

Write reliable Bash scripts with proper quoting, error handling, and parameter expansion.

0· 354·1 current·2 all-time
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the provided markdown guidance and the only required binary (bash) is appropriate. Minor metadata inconsistency: the registry metadata Owner ID (kn7572...) does not match the ownerId in _meta.json (kn73vp5...), which is likely a packaging/metadata error but not evidence of malicious behavior.
Instruction Scope
SKILL.md and the included .md files contain static guidance and example commands for writing Bash safely. They do not instruct the agent to read arbitrary system files, exfiltrate data, or fetch external endpoints. Examples show common shell commands but are presented as examples, not runtime directives to gather user data.
Install Mechanism
No install spec and no code files—this is instruction-only, which minimizes risk because nothing will be downloaded or written to disk.
Credentials
The skill requires no environment variables, secrets, or config paths. The single required binary (bash) is appropriate for its purpose.
Persistence & Privilege
always is false and the skill is user-invocable. It does not request persistent system presence or special privileges and does not modify other skills or system-wide agent settings.
Assessment
This skill is documentation-only and appears to be what it claims: Bash best-practices and examples. Because it is instruction-only, installing it won’t download code or request credentials. Before installing, verify you trust the publisher (there is a small ownerId mismatch in the packaged _meta.json vs. registry metadata), and be cautious about copying example commands into a shell without review—examples may operate on files or have side effects. If you want extra caution, review the .md files yourself or test any example commands in a disposable/sandbox environment.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

🖥️ Clawdis
OSLinux · macOS
Binsbash
latestvk977e4nt3qzg8edawywrfk0199829r4c
354downloads
0stars
1versions
Updated 1mo ago
v1.0.0
MIT-0
Linux, macOS

Quick Reference

TopicFile
Arrays and loopsarrays.md
Parameter expansionexpansion.md
Error handling patternserrors.md
Testing and conditionalstesting.md

Quoting Traps

  • Always quote variables—"$var" not $var, spaces break unquoted
  • "${arr[@]}" preserves elements—${arr[*]} joins into single string
  • Single quotes are literal—'$var' doesn't expand
  • Quote command substitution—"$(command)" not $(command)

Word Splitting and Globbing

  • Unquoted $var splits on whitespace—file="my file.txt"; cat $file fails
  • Unquoted * expands to files—quote or escape if literal: "*" or \*
  • set -f disables globbing—or quote everything properly

Test Brackets

  • [[ ]] preferred over [ ]—no word splitting, supports &&, ||, regex
  • [[ $var == pattern* ]]—glob patterns without quotes on right side
  • [[ $var =~ regex ]]—regex match, don't quote the regex
  • -z is empty, -n is non-empty—[[ -z "$var" ]] tests if empty

Subshell Traps

  • Pipes create subshells—cat file | while read; do ((count++)); done—count lost
  • Use while read < file or process substitution—while read; do ...; done < <(command)
  • ( ) is subshell, { } is same shell—variables in ( ) don't persist

Exit Handling

  • set -e exits on error—but not in if, ||, && conditions
  • set -u errors on undefined vars—catches typos
  • set -o pipefail—pipeline fails if any command fails, not just last
  • trap cleanup EXIT—runs on any exit, even errors

Arrays

  • Declare: arr=(one two three)—or arr=() then arr+=(item)
  • Length: ${#arr[@]}—not ${#arr}
  • All elements: "${arr[@]}"—always quote
  • Indices: ${!arr[@]}—useful for sparse arrays

Parameter Expansion

  • Default value: ${var:-default}—use default if unset/empty
  • Assign default: ${var:=default}—also assigns to var
  • Error if unset: ${var:?error message}—exits with message
  • Substring: ${var:0:5}—first 5 chars
  • Remove prefix: ${var#pattern}## for greedy

Arithmetic

  • $(( )) for math—result=$((a + b))
  • (( )) for conditions—if (( count > 5 )); then
  • No $ needed inside $(( ))$((count + 1)) not $(($count + 1))

Common Mistakes

  • [ $var = "value" ] fails if var empty—use [ "$var" = "value" ] or [[ ]]
  • if [ -f $file ] with spaces—always quote: if [[ -f "$file" ]]
  • local in functions—without it, variables are global
  • read without -r—backslashes interpreted as escapes
  • echo portability—use printf for reliable formatting

Comments

Loading comments...