ฉันมีฟังก์ชั่นทุบตีเพื่อตั้งค่า$PATH
เช่นนี้ -
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
}
ความคิดใด ๆ วิธีการบรรลุสิ่งดังกล่าวข้างต้นในทุบตี?
assign-path /abc
จะไม่ต่อท้าย/abc
ไปยังเส้นทางถ้า $ PATH มีอยู่แล้ว/abc/def
, /abcd
, /def/abc
ฯลฯ โดยเฉพาะอย่างยิ่งคุณไม่สามารถเพิ่มถ้าเส้นทางที่มีอยู่แล้ว/bin
/usr/bin
$PATH
ในคำตอบของฉันฉันจะทำแบบนี้กับเป็นข้อโต้แย้งมากที่สุดเท่าที่คุณต้องการเพียงแค่ใช้ add=/bin dir=/usr/bin ; [ -z "${dir%"$add"}" ] || dir="${dir}:${add}"
IFS=:
$PATH
อย่างไร และเพิ่มไดเรกทอรีไปยัง$PATH
หากยังไม่มี (ในSuper User )