$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
}
しかし、問題は、変数ごとに異なる関数を作成する必要があることです(たとえば、$CLASSPATHlike 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特にあなたが追加することはできませんなどの/binPATHが既に含まれている場合/usr/bin。
$PATH、次のようなあなたの議論に対するテストを分割して否定することですadd=/bin dir=/usr/bin ; [ -z "${dir%"$add"}" ] || dir="${dir}:${add}"。私の答えでは、私はあなたが好きなだけの引数を使用してこのようにしますIFS=:。
$PATHますか? そして、ディレクトリが$PATHまだない場合(スーパーユーザー)に追加します。