On 11/5/18 12:54 AM, Tom H wrote:
On Mon, Nov 5, 2018 at 7:51 AM Mike Wright
<nobody(a)nospam.hostisimo.com> wrote:
>
> There is such a thing as too terse. Can somebody explain what this
> cryptic snippet means?
> | | parameter | parameter | parameter |
> | | Set and Not Null | Set But Null | Unset |
> +------------------+--------------------+---------------+--------------+
> |${parameter?word} |substitute parameter|substitute null|error,exit |
> +------------------+--------------------+---------------+--------------+
In the case of ":?word" and "unset", for example, it'll print
"word",
and exit the script if it's running within a script.
</snip>
Thanks for the extensive reply Tom.
I've been poking at these for a bit now. The are powerful. It helped
me to rearrange the chart:
+--------------------+-----------+-------------+-------------+
| parameter is --> | set | null,empty | not set |
+--------------------+-----------+-------------+-------------+
| ${parameter-word} | parameter | null | word |
| ${parameter=word} | parameter | null | assign word |
| ${parameter?word} | parameter | null | error, exit |
| ${parameter+word} | word | word | null |
+--------------------+-----------+-------------+-------------+
| parameter: is --> | set | null,empty,not set |
+--------------------+-----------+-------------+-------------+
| ${parameter:-word} | parameter | word |
| ${parameter:=word} | parameter | assign word |
| ${parameter:?word} | parameter | error, exit |
| ${parameter:+word} | word | null |
+--------------------+-----------+---------------------------+
and then try to come up with uses.
Some time back I made a simple egg timer and had to test for a "how
long" parameter and used if []; then.
Using posix parameter expansion turned it into this:
# if $1 wait that long
# else wait this long
seconds=300
sleep ${1:-$seconds}
mplayer ~/Music/otherSounds/Chicken-clucking.mp3
On that note, the timer just went off. Time to get the cornbread out of
the oven :D