J'ai une fonction bash pour définir $PATH
comme ça -
assign-path()
{
str=$1
# if the $PATH is empty, assign it directly.
if [ -z $PATH ]; then
PATH=$str;
# if the $PATH does not contain the substring, append it with ':'.
elif [[ $PATH != *$str* ]]; then
PATH=$PATH:$str;
fi
}
Mais le problème est que je dois écrire une fonction différente pour différentes variables (par exemple, une autre fonction pour le $CLASSPATH
même, assign-classpath()
etc.). Je n'ai pas trouvé de moyen de passer l'argument à la fonction bash pour pouvoir y accéder par référence.
Ce serait mieux si j'avais quelque chose comme -
assign( bigstr, substr )
{
if [ -z bigstr ]; then
bigstr=substr;
elif [[ bigstr != *str* ]]; then
bigstr=bigstr:substr;
fi
}
Une idée, comment réaliser quelque chose comme ci-dessus en bash?
assign-path /abc
ne sera pas ajouter /abc
à PATH si $ PATH contient déjà /abc/def
, /abcd
, /def/abc
etc. Surtout vous ne pouvez pas ajouter /bin
si PATH contient déjà /usr/bin
.
$PATH
et un test negate contre vos arguments tels que : add=/bin dir=/usr/bin ; [ -z "${dir%"$add"}" ] || dir="${dir}:${add}"
. Dans ma réponse, je le fais de cette façon avec autant d'arguments que vous le souhaitez IFS=:
.
$PATH
? et Ajouter un répertoire $PATH
s'il n'est pas déjà là (sur Super User ).