Board logo

主題: 變數的特例-1 [打印本頁]

發表人: LSO    時間: 2007-8-19 05:40 PM     主題: 變數的特例-1

最近發現幾個scripts中的變數怪怪的.測試後發現和我觀念和書中不同
其實是有一些特例存在,只是可能被疏忽
慢慢整理出來,如有錯誤,請大家指正
此為第1部份,其餘再傳上來
k=1;k1=k
ech '${'”$k1”'}'=> ${k}   *  已修正好
echo '${'$k1'}' => ${k}
echo '”$k1”' => “$k1”
echo ''$k1'' => k
echo '$k1'$k1'' => $k1k

結論 : ' $a  $c ' 單數個單引號內變數不替換
            ''$a '$b '$c ''$d' '偶數個單引號內變數可替換 $a $c $d 不轉換 $b 可轉換
          : $ { } 括號內視作變數代號 ${k1} =k
          :  ${ $k1} => 錯誤 因為 $k1 視為變數代號,實際無 $k1
可在利用 eval 處理 '${'”$k1”'}' 得到的 ${k} 使成為echo ${k}

謝謝指正
GNU bash, version 3.1.17(2)-release (i586-mandriva-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
echo '${'”$k1”'}"'=> ${k} 不對稱符號為輸入錯誤現已修改

因本人還並不熟係linux,故表達可能不完全,需大家指正
      謝

[LSO 在  2007-8-23 08:57 PM 作了最後編輯]
發表人: innova    時間: 2007-8-20 06:09 PM

下面這 能跑嗎?  不行吧?

CODE:
[Copy to clipboard]
echo '${'”$k1”'}”
引號 根本不對稱
應該是無法執行才對!??


另,  "Shell"Script 跟 "Shell" 是有很大關係的
最好將您的 Shell 版本 寫出來
Ex:

引用:

# tcsh --version
tcsh 6.14.00 (Astron) 2005-03-25 (i386-intel-linux) options wide,nls,dl,al,kan,rh,color,filec

# bash --version
GNU bash, version 3.2.9(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

# zsh --version
zsh 4.2.6 (i686-redhat-linux-gnu)


用的 shell 不同 語法也會不一樣
Ex: (t)csh 系列 設定變數 要改用:

引用:

set k=1;set k1=k


if/loop 等的用法 差異更大!

即使 同 Shell, 版本不同 有些`狀況` 也會不一樣!
Ex: 同樣是 bash, 印象中 版本3.0 之前 就不能用 "echo ${k1:0:2}" 這樣的 Command!

如果這個 小'echo'  真的讓您很頭大
建議您改用 "printf"
用法與 C語言的 printf 幾乎 90% 一樣!

[innova 在  2007-8-20 06:21 PM 作了最後編輯]




歡迎光臨 TWed2k (http://twed2k.org/) Powered by Discuz! 4.1.0