Tengo una función bash para establecer $PATH
así:
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
}
Pero el problema es que tengo que escribir diferentes funciones para diferentes variables (por ejemplo, otra función para me $CLASSPATH
gusta, assign-classpath()
etc.). No pude encontrar una manera de pasar argumentos a la función bash para poder acceder a ella por referencia.
Sería mejor si tuviera algo como ...
assign( bigstr, substr )
{
if [ -z bigstr ]; then
bigstr=substr;
elif [[ bigstr != *str* ]]; then
bigstr=bigstr:substr;
fi
}
Alguna idea, ¿cómo lograr algo como lo anterior en bash?
assign-path /abc
No anexará /abc
al PATH $ PATH si ya contiene /abc/def
, /abcd
, /def/abc
etc. Sobre todo no se puede agregar /bin
si la ruta ya contiene /usr/bin
.
$PATH
y prueba negate contra sus argumentos como: add=/bin dir=/usr/bin ; [ -z "${dir%"$add"}" ] || dir="${dir}:${add}"
. En mi respuesta, lo hago de esta manera con tantos argumentos como quieras solo usando IFS=:
.
$PATH
? y Agregar directorio a $PATH
si aún no está allí (en Super Usuario ).