2016-11-15 113 views
1

當我echo $PATH 我得到:home/x/bin:home/x/.local/bin:...:...和和每個路徑由:

分離。當我echo $PATH | tr ':' '\n' 我得到:

home/x/bin 
home/x/.local/bin 
... 
... 

凡非常道由新線分離

所以現在我想,以適應這一切到一個變量($)或腳本,所以我可以執行它,它列出了線的路徑,但它不會工作:

我想:x=${echo $PATH | tr ':' '\n'}
但我得到-bash: ${echo $PATH | tr ':' '\n'}: bad substitution

我也嘗試了腳本,其中:

#!/bin/bash 
echo $PATH > 11 
sleep 1 
bb=${`tr ':' '\n' < 11`} 
echo $bb 

我能做些什麼?

回答

6

使用bash的Parameter Expansion

echo "${PATH//:/$'\n'}" 

+0

非常感謝!我剛剛學習了參數擴展,現在一切都變得非常有意義了!!!!!!在你的問題中,'echo'$ {PATH //:/ $'\ n'}「'你能否給我多一些暗示或使用第二個'$'的例子? – KOOLz

+1

Bash用換行符替換'$'\ n''而不使用echo的'-e'選項。使用echo的'-e'選項也是可能的:'echo -e「$ {PATH //:/ \ n}」' – Cyrus

4

你應該使用命令替換。花括號用於將變量替換分組$。而對於命令substition你需要反引號,如果你本身境界的外殼,但對於bash,那麼你需要括號

# Wrong 
x=${echo $PATH | tr ':' '\n'} 

# Right 
x=$(echo $PATH | tr ':' '\n') 
echo "$x" 
+0

感謝您的評論,但是這會不行。正如你可以在這張圖片中看到的(http://tinypic.com/view.php?pic=25k0vw9&s=9)這是我的截圖。我試圖列出$ PATH – KOOLz

+3

我建議使用'echo「$ x」'。 – Cyrus

+0

包裹X引號,就像居魯士說: –