$PATH
このように設定するbash関数があります-
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
}
しかし、問題は、変数ごとに異なる関数を作成する必要があることです(たとえば、$CLASSPATH
like assign-classpath()
などの別の関数)。bash関数に引数を渡す方法を見つけることができなかったため、参照でアクセスできます。
次のようなものがあればもっといいでしょう-
assign( bigstr, substr )
{
if [ -z bigstr ]; then
bigstr=substr;
elif [[ bigstr != *str* ]]; then
bigstr=bigstr:substr;
fi
}
上記のようなことをbashでどのように達成するのですか?
assign-path /abc
追加しません/abc
$ PATHが既に含まれている場合、PATHに/abc/def
、/abcd
、/def/abc
特にあなたが追加することはできませんなどの/bin
PATHが既に含まれている場合/usr/bin
。
$PATH
、次のようなあなたの議論に対するテストを分割して否定することですadd=/bin dir=/usr/bin ; [ -z "${dir%"$add"}" ] || dir="${dir}:${add}"
。私の答えでは、私はあなたが好きなだけの引数を使用してこのようにしますIFS=:
。
$PATH
ますか? そして、ディレクトリが$PATH
まだない場合(スーパーユーザー)に追加します。