The answer to removing trailing whitespace with sed has most of the answer, but I want
sed -i 's/[ \t]*$//' $1
to be able to take arbitrary number of file arguments as a shell script on the command line, including glob arguments. I.e. suppose the script is called strip_trailing_whitespace
. Then I'd like to be able to do both
strip_trailing_whitespace foo.cc bar.cc
and
strip_trailing_whitespace *.cc *.hh
to strip trailing whitespaces from all files of the form *.cc
and *.hh
. Arguments not based on the answer quoted above are also fine.
Best Answer
$1
is a positional parameter; it will expand to the first argument passed to the script. There are similarly$2
,$3
...$9
,${10}
,${11}
,...The special parameter
"$@"
will expand to a list of all the positional parameters.So you can do the following:
If you want to pass a glob/pattern to this script (or to any program), it must be escaped or quoted when you call the script - this is a function of the shell; it will expand any patterns before your script even sees it. This case shouldn't need that - the shell can expand the pattern, and the results of that expansion all get passed to
sed
.