J'ai certaines variables dans un script bash qui peuvent contenir un nom de fichier ou être désactivées. Leur contenu devrait être passé comme un argument supplémentaire à un programme. Mais cela laisse un argument vide lorsque la variable n'est pas définie.omettre de passer un argument entre guillemets vide
$ afile=/dev/null
$ anotherfile=/dev/null
$ unset empty
$ cat "$afile" "$empty" "$anotherfile"
cat: : No such file or directory
Sans guillemets, cela fonctionne très bien car l'argument supplémentaire est simplement omis. Mais comme les variables peuvent contenir des espaces, elles doivent être citées ici. Je comprends que je pourrais simplement envelopper la ligne entière dans un test sur la vacuité. Mais un test pour chaque variable conduirait à un arbre de décision énorme et alambiqué.
Existe-t-il une solution plus compacte à cela? Est-ce que bash peut omettre une variable vide citée?
Je pensais aux délices de l'expansion des paramètres, mais je ne pensais pas à la citation à l'intérieur des accolades. Très élégant, en effet, et donc exactement ce que je cherchais. – XZS