2011-03-11 50 views
0
[[ -n "$aOutputFolder" ]] && (IsEndWithSlash $aOutputFolder || aOutputFolder=$aOutputFolder"/") 

上面的代碼是:檢查aOutputFolder是否爲空;如果沒有,它會檢查天氣以'/'結尾或追加'/'。bash條件表達式

當我用aOutputFold =「/ home/todd」執行此行時,它沒有像我預期的那樣追加'/'。希望有人能幫助!

回答

2

parens打開一個新的子shell,並在那裏修改該變量;在父shell中從未發生變化。

[[ -n $aOutputFolder ]] && { IsEndWithSlash "$aOutputFolder" || aOutputFolder="$aOutputFolder/" ; } 
+0

謝謝,它的工作原理!你能否提供更多有關{}和()的信息? – Dagang

+0

'(...)'在新的子shell(進程)中運行命令序列。 '{...; }'如果可能的話,'在同一個shell中運行命令序列(背景和管道可以干擾這個)。 –

0

你應該嘗試:aOutputFolder+="/"

2

試試這個(無需對IsEndWithSlash實用程序):

[[ ${aOutputFolder:-/} != */ ]] && aOutputFolder+=/ 

說明:

  • ${aOutputFolder:-/} - 如果變量空(空或未設置),使用斜線作爲比較字符串,否則使用其值
  • != */ - 如果比較字符串不等於以斜線結束的任何字符序列
  • && aOutputFolder+=/ - 然後連接一個斜線上年底
+0

它很優雅,謝謝! – Dagang