2016-12-01 84 views
0

假設您的PATH環境變量包含由:分隔的路徑列表,我如何才能將此列表中的第一個文件夾獲取到另一個變量中?如何從bash中的PATH環境變量中獲取第一個目錄?

+0

我只是想知道爲什麼你從不選擇一個答案。這是我們在這裏推出的方式,你知道:[我應該怎麼做當有人回答我的問題?](https://stackoverflow.com/help/someone-answers) – sorontar

回答

3

我假設你想用bash命令來做到這一點。試試這個:

echo ${PATH%%:*} 
+0

這應該是'%%:*';你想要''*'最長的匹配。 – chepner

+0

好點。糾正。 –

1

到目前爲止,我能得到這個使用MYDIR=$(sed 's/:/\n/' <<< "$PATH" | head -n 1),但我會很高興地看到一個更漂亮的實現。

2

如何使用awk?

foo=`echo $PATH | awk -F':' '{ print $1}'` 
+0

謝謝!到目前爲止,這是跨平臺Linux和Mac OS的唯一例子。 – sorin

+0

這也適用於沒有bash擴展 - 如果這是重要的。 – Hannu

2

一種方法來讀取第一個條目使用read與正確IFS

IFS=: read firstPath _ <<< "$PATH" 

echo "$firstPath" 

您還可以使用IFS來填充一個數組,並使用索引得到陣列中的任何Nth位置:

IFS=: read -ra arr <<< "$PATH" 

echo "First entry: ${arr[0]}" 
echo "Second entry: ${arr[1]}" 
echo "Fifth entry: ${arr[4]}" 

另一個bash解決方案是先剝去所有東西:

firstPath="${PATH%%:*}" 
0

無論是這樣的:

mydir=${PATH%%:*} 

或者這樣:

IFS=: read mydir t <<<"$PATH" 

都不錯的解決方案。