bash
Variables
$0 | My filename |
$n | positional parameter n |
$n - $m | positional paramters n thru m |
${n} | positional parameter n |
“${*}” | all positional parameters (single word) |
“$@” | all positional parameters (separate) |
$# | number of positional parameters |
${#{*}} | number of positional parameters |
${#@} | number of positional parameters |
$? | value returned by last command |
$$ | PID of current shell |
$! | process number of last background cmd |
$_ | Last argument of previous cmd |
Miscellany
-x | print commands as executed |
$( ) | in-line command substitution (new style) |
` ` | in-line command substitution (old style) |
$((...)) | in-line arithmetic evaluation |
Prompts
\h | short hostname |
\H | full hostname |
\u | username |
\w | current working directory |
\W | basename of current working directory |
\$ | # if the effective UID is 0, otherwise $ |
Variable Substitution
$name | shell variable name |
${name} | delimit shell variable name |
${name-word} | variable nameif set, else word |
${name=word} | as above but also set name to word |
${name?word} | use name if set, otherwise print word and exit |
${name+word} | use word if name is set, otherwise use nothing |
${namen} | element n in array name |
${#name} | length of shell variable name |
${#name*} | number of elements in array name |
${#name@} | number of elements in array name |
${name#pat} | remove shortest leading substring of name that matches pat |
${name##pat} | remove longest leading substring of name that matches pat |
${name%pat} | remove shortest trailing substring of name that matches pat |
${name%%pat} | remove longest trailing substring of name that matches pat |
${name:start} | length characters of name starting at start(counting from0); use rest of value if no length. Negative start counts from the end |
${name:start:length} | |
${name/pattern/string} | value of name with first match of pattern replaced with string |
${name/pattern} | value of name with first match of pattern deleted |
${name/#pattern/string} | value of name with match of pattern replaced with string;match must occur at beginning |
${name/%pattern/string} | value of name with match of pattern replaced with string;match occurs at end |
bash.txt · Last modified: 2017/11/10 02:15 by mark