Ich habe eine Bash-Funktion, um das $PATH
wie folgt einzustellen -
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
}
Aber das Problem ist, ich muss unterschiedliche Funktionen für unterschiedliche Variablen schreiben (zum Beispiel eine andere Funktion für $CLASSPATH
Ähnliches assign-classpath()
usw.). Ich konnte keine Möglichkeit finden, Argumente an die Bash-Funktion zu übergeben, damit ich per Referenz darauf zugreifen kann.
Es wäre besser, wenn ich etwas hätte wie -
assign( bigstr, substr )
{
if [ -z bigstr ]; then
bigstr=substr;
elif [[ bigstr != *str* ]]; then
bigstr=bigstr:substr;
fi
}
Irgendeine Idee, wie man so etwas in bash erreicht?
assign-path /abc
nicht anhängen /abc
zu PATH , wenn bereits $ PATH enthält /abc/def
, /abcd
, /def/abc
etc. Besonders hinzufügen Sie können nicht , /bin
wenn PATH bereits enthält /usr/bin
.
$PATH
und negieren Test gegen Ihre Argumente wie: add=/bin dir=/usr/bin ; [ -z "${dir%"$add"}" ] || dir="${dir}:${add}"
. In meiner Antwort mache ich es so mit so vielen Argumenten, wie Sie nur verwenden möchten IFS=:
.
$PATH
? und Verzeichnis hinzufügen, $PATH
falls es noch nicht vorhanden ist (unter Super User ).