Tôi có một hàm bash để đặt $PATH
như thế này -
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
}
Nhưng vấn đề là, tôi phải viết hàm khác nhau cho các biến khác nhau (ví dụ: hàm khác cho $CLASSPATH
like, assign-classpath()
v.v.). Tôi không thể tìm cách chuyển đối số cho hàm bash để tôi có thể truy cập nó bằng cách tham chiếu.
Sẽ tốt hơn nếu tôi có một cái gì đó như -
assign( bigstr, substr )
{
if [ -z bigstr ]; then
bigstr=substr;
elif [[ bigstr != *str* ]]; then
bigstr=bigstr:substr;
fi
}
Bất kỳ ý tưởng, làm thế nào để đạt được một cái gì đó như trên trong bash?
assign-path /abc
sẽ không thêm /abc
vào PATH nếu $ PATH đã chứa /abc/def
, /abcd
, /def/abc
vv Đặc biệt bạn không thể thêm /bin
nếu PATH đã chứa /usr/bin
.
$PATH
và phủ nhận kiểm tra đối với các đối số của bạn như : add=/bin dir=/usr/bin ; [ -z "${dir%"$add"}" ] || dir="${dir}:${add}"
. Trong câu trả lời của tôi, tôi làm theo cách này với nhiều đối số mà bạn muốn chỉ sử dụng IFS=:
.
$PATH
? và Thêm thư mục vào $PATH
nếu nó chưa có (trên Super User ).