unix shell编程if语句条件设置

时间:2016-03-27 14:50:19

标签: shell unix

我试图将文件名大写设置为低于低于高,我不知道如何使用"和" shell编程中的操作。

spring-integration-amqp:4.2.5.RELEASE

我尝试了这三个if语句,但没有人运作良好。我该怎么办

3 个答案:

答案 0 :(得分:0)

if [ "$temp" \> 'a' ] && [ "$temp" \< 'z' ] || [ "$temp" = 'a' ] || [ "$temp" = 'z' ]  ; then
  echo 'true 1'
fi

if [ "$temp" \> 'a' -a "$temp" \< 'z' -o "$temp" = 'a' -o "$temp" = 'z' ]  ; then
  echo 'true 2'
fi

答案 1 :(得分:0)

您正在比较字符串(文件名)和字符 如果您只想更改文件名的大小写,可以使用:

file="FileWithUpAndDowns"

    echo "Tr gives ${file}" | tr '[[:lower:]]' '[[:upper:]]'
    # or use typeset
    typeset -u  upperfile
    typeset -l  lowerfile
    upperfile="${file}"
    lowerfile="${file}"
    echo "Low=${lowerfile}"
    echo "Up=${upperfile}"

答案 2 :(得分:0)

bash glob模式了解POSIX字符类,因此要测试小写字符:

if [[ $temp == [[:lower:]] ]]; then ...

关键是让右侧不加引号让shell将其视为模式。如果它被引用,它将被视为文字字符串。请注意,[[ double bracket ]]表单的此行为仅

但是,正如您所说,您想要交换案例,这很简单:

swapped=$( tr '[:lower:][:upper:]' '[:upper:][:lower:]' <<<"$str" )