bash条件表达式

时间:2011-03-11 02:49:07

标签: bash

[[ -n "$aOutputFolder" ]] && ( IsEndWithSlash $aOutputFolder || aOutputFolder=$aOutputFolder"/" )

上面的代码是:检查aOutputFolder是否为空;如果没有,它将用'/'检查天气结束或附加'/'。

当我使用aOutputFold =“/ home / todd”执行此行时,它没有像我预期的那样附加'/'。希望有人可以帮忙!

3 个答案:

答案 0 :(得分:2)

parens打开一个新的子shell,变量在那里被修改;改变永远不会发生在父shell中。

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

答案 1 :(得分:2)

尝试一下(不需要IsEndWithSlash实用程序):

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

说明:

  • ${aOutputFolder:-/} - 如果变量为空(null或未设置),请对比较字符串使用斜杠,否则使用其值
  • != */ - 如果比较字符串不等于以斜杠结尾的任何字符序列
  • && aOutputFolder+=/ - 然后在末尾连接斜杠

答案 2 :(得分:0)

您应该尝试:aOutputFolder+="/"