다음 $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
등 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=:
.