Sysop: | Amessyroom |
---|---|
Location: | Fayetteville, NC |
Users: | 43 |
Nodes: | 6 (0 / 6) |
Uptime: | 94:09:57 |
Calls: | 290 |
Calls today: | 1 |
Files: | 904 |
Messages: | 76,378 |
D'oh!
(Along with these quotes, I'd add ./ before $file.)
In article <vb9k2l$3r705$1@dont-email.me>,
Nuno Silva <nunojsilva@invalid.invalid> wrote:
...
D'oh!
(Along with these quotes, I'd add ./ before $file.)
Or, more simply, just put -- after the -p.
This is an often overlooked aspect of shell programing. You should always use "--". The "shellcheck" program will tell you this, if you let it.
The "--" option is just that, an option coded into the argument parser
of the program being invoked. Many programs /do not/ recognize "--" as
an "end of flags" argument, so the effectiveness of "--" is unreliable.
On Wed, 04 Sep 2024 13:04:07 +0000, Kenny McCormack wrote:
In article <vb9k2l$3r705$1@dont-email.me>,
Nuno Silva <nunojsilva@invalid.invalid> wrote:
...
D'oh!
(Along with these quotes, I'd add ./ before $file.)
Or, more simply, just put -- after the -p.
This is an often overlooked aspect of shell programing. You should always >> use "--". The "shellcheck" program will tell you this, if you let it.
The "--" option is just that, an option coded into the argument parser of
the program being invoked. Many programs /do not/ recognize "--" as an
"end of flags" argument, so the effectiveness of "--" is unreliable.
OTOH, if you specify a fully qualified pathname, (or, at least, a qualified relative pathname), you can assure yourself that the file path provided
to the program /will not/ start with the '-' that indicates a program flag.
Note that all this is /convention/ and not /requirement/. There are situations
in which /none/ of the above applies, as
a) the program interprets it's arguments by /position/, or
b) the program doesn't use the '-' to introduce flag arguments, or
c) the program doesn't take filenames as arguments, or
d) some other conditions that I'm too lazy to enumerate
On 2024-09-04, Lew Pitcher <lew.pitcher@digitalfreehold.ca> wrote:
On Wed, 04 Sep 2024 13:04:07 +0000, Kenny McCormack wrote:
In article <vb9k2l$3r705$1@dont-email.me>,
Nuno Silva <nunojsilva@invalid.invalid> wrote:
...
D'oh!
(Along with these quotes, I'd add ./ before $file.)
Or, more simply, just put -- after the -p.
This is an often overlooked aspect of shell programing. You should always >>> use "--". The "shellcheck" program will tell you this, if you let it.
The "--" option is just that, an option coded into the argument parser of
the program being invoked. Many programs /do not/ recognize "--" as an
"end of flags" argument, so the effectiveness of "--" is unreliable.
OTOH, if you specify a fully qualified pathname, (or, at least, a qualified >> relative pathname), you can assure yourself that the file path provided
to the program /will not/ start with the '-' that indicates a program flag. >>
Note that all this is /convention/ and not /requirement/. There are situations
in which /none/ of the above applies, as
a) the program interprets it's arguments by /position/, or
b) the program doesn't use the '-' to introduce flag arguments, or
c) the program doesn't take filenames as arguments, or
d) some other conditions that I'm too lazy to enumerate
d) it's a goddamned GNU program that continues to take options
after non-option arguments!
$ ls . -ld
drwxr-xr-x 67 kaz kaz 36864 Sep 3 15:59 .
... unless -- is specified to signal the end of options.
$ ls -ld -- . -ld
ls: cannot access '-ld': No such file or directory
drwxr-xr-x 67 kaz kaz 36864 Sep 3 15:59 .
So unfortunately although starting an argument with ./ will
ensure that it's not treated as an option, it doesn't mean
it will be treated as the first non-option argument after
which there are no more option arguments.