I’m trying to use bash string operators on a constant string. For instance, you can do the following on variable $foo:
$ foo=a:b:c; echo ${foo##*:}
c
Now, if the “a:b:c” string is constant, I would like to have a more concise solution like:
echo ${"a:b:c"##*:}
However, this is not valid bash syntax. Is there any way to perform this?
[The reason I need to do this (rather than hardcoding the result of the substitution, ie. “c” here) is because I have a command template where a “%h” placeholder is replaced by something before running the command; the result of the substitution is seen as a constant by bash.]
That’s not possible using parameter expansion.
You could use other commands for this like sed/awk/expr.
but I don’t see the requirement for this.
You could just do:
Or if speed is not an issue, and you don’t want to clutter the current environment with unneeded variables:
Anyway, you’d be better off using the command template to do the string manipulation or using something simple like cut:
Or more sophisticated like awk or sed:
Depends on what you need.