Bash

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

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "Bash" with this command: npx skills add ivangdavila/bash

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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Charging Ledger

充电记录账本 - 从截图提取充电信息并记录,支持按周、月查询汇总。**快速暗号**: 充电记录、充电账本、充电汇总。**自然触发**: 记录充电、查询充电费用、充电统计。

Registry SourceRecently Updated
General

qg-skill-sync

从团队 Git 仓库同步最新技能到本机 OpenClaw。支持首次设置、定时自动更新、手动同步和卸载。当用户需要同步技能、设置技能同步、安装或更新团队技能,或提到「技能同步」「同步技能」时使用。

Registry SourceRecently Updated
General

Ad Manager

广告投放管理 - 自动管理广告投放、优化ROI、生成报告。适合:营销人员、电商运营。

Registry SourceRecently Updated