Tengo una función bash para establecer $PATHasí:
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 $CLASSPATHgusta, 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 /abcNo anexará /abcal PATH $ PATH si ya contiene /abc/def, /abcd, /def/abcetc. Sobre todo no se puede agregar /binsi la ruta ya contiene /usr/bin.
$PATHy 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 $PATHsi aún no está allí (en Super Usuario ).