2013-04-28 92 views
0

我有在zsh的工作,但在bash不起作用腳本中的一行:有沒有辦法做多個shell變量擴展/參數替換?

SHORTDIR=${${${PWD##*/}//./_dot_}//:/_colon_} 

這基本上是basename $PWD | sed -e 's/\./0/g' -e 's/:/1/g'短/效率的版本。

將變量擴展串聯在一起的語法是什麼?

+0

可能重複http://stackoverflow.com/questions/5917439/bash-bad-substitution-with-subshel​​l-and-子) – perreal 2013-04-29 00:03:35

回答

1

不幸的是,替換的第一部分必須是參數名稱。一個替代的sed版本將是:

echo $PWD | sed -e 's!.*/!!' -e 'y/.:/01/' 
[擊壞取代與子外殼和子串(的
1

我希望有會是一個更好的辦法比

SHORTDIR=${PWD##*/} 
SHORTDIR=${SHORTDIR//./_dot_} 
SHORTDIR=${SHORTDIR//:/_colon_} 

,但是這是我堅持。

根據@perreal鏈接的問題的答案,bash基本上不允許擴展變量本身作爲「參數」,這就是爲什麼它失敗。

相關問題