Eu tenho uma função bash para definir o $PATHseguinte -
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
}
Mas o problema é que tenho que escrever funções diferentes para variáveis diferentes (por exemplo, outra função para $CLASSPATHcurtir assign-classpath()etc.). Não consegui encontrar uma maneira de passar o argumento para a função bash para que eu possa acessá-lo por referência.
Seria melhor se eu tivesse algo como -
assign( bigstr, substr )
{
if [ -z bigstr ]; then
bigstr=substr;
elif [[ bigstr != *str* ]]; then
bigstr=bigstr:substr;
fi
}
Alguma idéia, como conseguir algo como o acima no bash?
assign-path /abcnão irá acrescentar /abcao PATH se $ PATH já contém /abc/def, /abcd, /def/abcetc. Especialmente você não pode adicionar /binse PATH já contém /usr/bin.
$PATHe teste negate contra seus argumentos como: add=/bin dir=/usr/bin ; [ -z "${dir%"$add"}" ] || dir="${dir}:${add}". Na minha resposta, eu faço dessa maneira com quantos argumentos você quiser usar apenas IFS=:.
$PATH? e Adicionar diretório para $PATHse ele ainda não estiver lá (no Superusuário ).