J'ai le code suivant dans un fichier provenant à la fois de zsh et de bash.
if test $SHELLNAME = zsh ; then
lss() { l -l ${1:-.}/*(s,S,t); }
laf() { l ${1:-.}/.*(.); }
lad() { l -d ${1:-.}/.*(/); }
lsw() { l -ld ${1:-.}/.*(R,W,X.^ND/); }
fi
SHELLNAME
est zsh
si le shell est zsh et bash
si le shell est bash.
Chacune des fonctions ci-dessus contient du code qui fonctionne avec zsh, mais pas bash.
Lorsque je source ce fichier, je reçois les erreurs suivantes.
bash: <filename>: line 67: syntax error near unexpected token `('
bash: <filename>: line 67: ` lss() { l -l ${1:-.}/*(s,S,t); }'
Pour le moment, j'utilise eval
pour contourner la vérification de la syntaxe de bash.
if test $SHELLNAME = zsh ; then
# Using eval makes sure bash can't try to syntax-check these functions.
eval 'lss() { l -l ${1:-.}/*(s,S,t); }'
eval 'laf() { l ${1:-.}/.*(.); }'
eval 'lad() { l -d ${1:-.}/.*(/); }'
eval 'lsw() { l -ld ${1:-.}/.*(R,W,X.^ND/); }'
fi
Existe-t-il une meilleure solution à ce problème? (peut-être celui qui n'utilise pas eval
)