${10}
echo "Ninth parameter: $9" echo "Tenth parameter: $10"
echo "Ninth parameter: $9" echo "Tenth parameter: ${10}"
For legacy reasons, $10 is interpreted as the variable $1 followed by the literal string 0.
$10
$1
0
Curly braces are needed to tell the shell that both digits are part of the parameter expansion.
If you wanted the trailing digits to be literal, ${1}0 will make this clear to both humans and ShellCheck.
${1}0
In dash, $10 is (wrongly) interpreted as ${10}, so some 'reversed' care should also be taken:
dash
bash -c 'set a b c d e f g h i j; echo $10 ${1}0' # POSIX: a0 a0 dash -c 'set a b c d e f g h i j; echo $10 ${1}0' # WRONG: j a0
There was an error while loading. Please reload this page.