Inside of a while read line loop, I see this variable expansion ${line/device name:}
. I've tried running the script with my own input file and it just prints out the line.
Can you tell me what that expansion is doing?
Inside of a while read line loop, I see this variable expansion ${line/device name:}
. I've tried running the script with my own input file and it just prints out the line.
Can you tell me what that expansion is doing?
The variable name is line
. / is for string substitution, that is "device name:" if exists anywhere in the $line
is removed.
> line="a device name: some name"
> echo ${line/device name:}
a some name
You may also see #
and %
substitutions, which stand for substitutions in the line
begin and end. Also beware that such /
substitution is a bash-specific feature (e.g. ash
doesn't support it, %
and #
are seemingly portable), so you should use #!/bin/bash
instead of #!/bin/sh
as a hashbang in the beginning of your script.
%
and #
are indeed portable, being part of the POSIX shell specification. –
Snapshot It returns $line
with the substring device name:
removed. From the bash man page:
${parameter/pattern/string}
Pattern substitution. The pattern is expanded to produce a pattern just as in
pathname expansion. Parameter is expanded and the longest match of pattern
against its value is replaced with string. If pattern begins with /, all
matches of pattern are replaced with string. Normally only the first match is
replaced. If pattern begins with #, it must match at the beginning of the
expanded value of parameter. If pattern begins with %, it must match at the
end of the expanded value of parameter. If string is null, matches of pattern
are deleted and the / following pattern may be omitted. If parameter is @ or
*, the substitution operation is applied to each positional parameter in turn,
and the expansion is the resultant list. If parameter is an array variable
subscripted with @ or *, the substitution operation is applied to each member
of the array in turn, and the expansion is the resultant list.
© 2022 - 2024 — McMap. All rights reserved.