--- name: write-script-bash description: MUST use when writing Bash scripts. --- ## CLI Commands Place scripts in a folder. After writing, tell the user they can run: - `wmill script generate-metadata` - Generate .script.yaml and .lock files - `wmill sync push` - Deploy to Windmill Do NOT run these commands yourself. Instead, inform the user that they should run them. Use `wmill resource-type list --schema` to discover available resource types. # Bash ## Structure Do not include `#!/bin/bash`. Arguments are obtained as positional parameters: ```bash # Get arguments var1="$1" var2="$2" echo "Processing $var1 and $var2" # Return JSON by echoing to stdout echo "{\"result\": \"$var1\", \"count\": $var2}" ``` **Important:** - Do not include shebang (`#!/bin/bash`) - Arguments are always strings - Access with `$1`, `$2`, etc. ## Output The script output is captured as the result. For structured data, output valid JSON: ```bash name="$1" count="$2" # Output JSON result cat << EOF { "name": "$name", "count": $count, "timestamp": "$(date -Iseconds)" } EOF ``` ## Environment Variables Environment variables set in Windmill are available: ```bash # Access environment variable echo "Workspace: $WM_WORKSPACE" echo "Job ID: $WM_JOB_ID" ```