OVH Cloud OVH Cloud

evaluation indirecte de paramètre en shell portable

22 réponses
Avatar
rixed
Coucou la liste.

Je suppose que c'est une FAQ, mais je n'ai pas réussit à mettre la main
sur la FAQ du groupe.

Donc, question :

Sous zsh, on peut faire :

$ toto="valeur de toto"
$ titi=toto
$ echo ${(P)titi}
valeur de toto
$ youpi
command not found: youpi

J'aimerai savoir s'il n'y a pas moyen de faire cela en shell portable.
Genre quelquechose qui fonctionnerait aussi bien avec bash, zsh, tcsh...
Et pourquoi pas aussi en shell POSIX.

2 réponses

1 2 3
Avatar
Pascal Bourguignon
Jean-Louis Liagre writes:
#! /usr/bin/env bash

en haut du script si on veut utiliser des features specific a
bash.
Je suis bien d'accord.

Je trouve bien plus facile de commencer un script par:
wget ftp://ftp.gnu.org/gnu/bash/bash-2.05.tar.bz2
tar jxf bash-2.05.tar.bz2
cd bash-2.05
./configure
make
make install
bash script.bash
que de s'embêter à faire des scripts "portables"...



"tar jxf" n'est pas portable ...


Bien sur que si:

wget ftp://ftp.gnu.org/gnu/tar/tar-1.15.tar.gz
gzip -d < tar-1.15.tar.gz | tar -xf -
cd tar-1.15
./configure
make
make install

et après, on peut utiliser tar zxf ou tar jxf comme on veut. (On peut
avoir à installer bzip2 et gzip avant si ce n'est pas déjà fait).
Voir Fink sur MacOSX, ports sur *BSD, etc...

--
__Pascal Bourguignon__ http://www.informatimago.com/

"You can tell the Lisp programmers. They have pockets full of punch
cards with close parentheses on them." --> http://tinyurl.com/8ubpf



Avatar
Jean-Louis Liagre
Pascal Bourguignon wrote:
Jean-Louis Liagre writes:
#! /usr/bin/env bash

en haut du script si on veut utiliser des features specific a
bash.
Je suis bien d'accord.

Je trouve bien plus facile de commencer un script par:
wget ftp://ftp.gnu.org/gnu/bash/bash-2.05.tar.bz2
tar jxf bash-2.05.tar.bz2
cd bash-2.05
./configure
make
make install
bash script.bash
que de s'embêter à faire des scripts "portables"...

"tar jxf" n'est pas portable ...



Bien sur que si:


gnu tar est bien sûr portable, l'option j est une extension non POSIX absente de
la plupart des autres implémentations de tar (mais présente dans star).

wget ftp://ftp.gnu.org/gnu/tar/tar-1.15.tar.gz
gzip -d < tar-1.15.tar.gz | tar -xf -
cd tar-1.15
../configure
make
make install


make install peut échouer si /usr/local est en read-only.

et après, on peut utiliser tar zxf ou tar jxf comme on veut.


Seulement en mettant son chemin complet ou si on a /usr/local/bin en premier
dans son PATH.




1 2 3