[[ -n "$aOutputFolder" ]] && (IsEndWithSlash $aOutputFolder || aOutputFolder=$aOutputFolder"/")
上面的代碼是:檢查aOutputFolder是否爲空;如果沒有,它會檢查天氣以'/'結尾或追加'/'。bash條件表達式
當我用aOutputFold =「/ home/todd」執行此行時,它沒有像我預期的那樣追加'/'。希望有人能幫助!
[[ -n "$aOutputFolder" ]] && (IsEndWithSlash $aOutputFolder || aOutputFolder=$aOutputFolder"/")
上面的代碼是:檢查aOutputFolder是否爲空;如果沒有,它會檢查天氣以'/'結尾或追加'/'。bash條件表達式
當我用aOutputFold =「/ home/todd」執行此行時,它沒有像我預期的那樣追加'/'。希望有人能幫助!
parens打開一個新的子shell,並在那裏修改該變量;在父shell中從未發生變化。
[[ -n $aOutputFolder ]] && { IsEndWithSlash "$aOutputFolder" || aOutputFolder="$aOutputFolder/" ; }
你應該嘗試:aOutputFolder+="/"
試試這個(無需對IsEndWithSlash
實用程序):
[[ ${aOutputFolder:-/} != */ ]] && aOutputFolder+=/
說明:
${aOutputFolder:-/}
- 如果變量空(空或未設置),使用斜線作爲比較字符串,否則使用其值!= */
- 如果比較字符串不等於以斜線結束的任何字符序列&& aOutputFolder+=/
- 然後連接一個斜線上年底它很優雅,謝謝! – Dagang
謝謝,它的工作原理!你能否提供更多有關{}和()的信息? – Dagang
'(...)'在新的子shell(進程)中運行命令序列。 '{...; }'如果可能的話,'在同一個shell中運行命令序列(背景和管道可以干擾這個)。 –