2013-05-29 35 views
1

我不明白${}在第四個和第六個提示中正在做什麼,並且我找不到任何關於此的文檔,書Python for Unix and Linux System Administrator有一個例子,類似於第六個提示中的一個,其中變量不是隻有預先計劃的$也是爲了嵌入內另一個字符串包含在{},它的工作原理,如果我引用完整地表達,但正在發生的事情[4 & 6] ?:ipython變量擴展如何工作?

In [1]: test = 'TEST TEST TEST!!!'                       

In [2]: !echo test 
test                               

In [3]: !echo $test                           
TEST TEST TEST!!!                            

In [4]: !echo ${test} # Don't understand this one.                         
TEST TEST!!! 

In [5]: !echo {test}                          
TEST TEST TEST!!! 

In [6]: !echo ${test}TEST!!! # Nor this one either. 
TEST TEST!!!TEST!!! 

In [7]: !echo '${test}TEST!!!' 
$TEST TEST TEST!!!TEST!!! 

回答

4

在[4 ],錯字,)而不是},否則我會猜測,當dooing ${test}{test}被用於TEST TEST TEST,導致​​,然後$TEST再次被花費(在shell中我想)。

我這樣說是因爲:

In [1]: test = 'PATH TEST TEST!!!' 

In [2]: !echo "${test}" 
/usr/local/bin:/usr/local/share/pyt.../.rvm/bin TEST TEST!!! 

但你必須要小心,IPython的確實自己的變量擴展,$foo{foo}(無美元符號)擴大到的Python FOO的值。貝殼經常使用$FOO${FOO}(美元和支架)。

在IPython中,當使用!時,您必須使用雙美元$$來顯式dolar。不知道如何逃避括號。

+0

修復了錯字,謝謝! – SalchiPapa