Liste des Groupes | Revenir à cu programmer |
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.
Les messages affichés proviennent d'usenet.