BASH WHILE循环没有按下CASE开关

时间:2013-10-02 16:18:12

标签: bash while-loop switch-statement

嘿伙计们几乎都说过它,但是我将两个变量回应到一个BASH循环中以启动它,并且(据说)使用case能够识别它们的位置并运行类似的但是分开(第二次丢失-k标志)wget语句。我点击git checkout,但似乎我没有进入我的案件。我如何解决这个问题,或者是否有更好的方法来解决这个问题,因为我只是放弃-k标志?

#!/bin/bash

echo -e "render\nstorage" | while read x; do 

    git checkout "$x"

    case $x in
        $1)
          wget "${WGDOMAIN}" -r -l INF -k -p        \
            --no-check-certificate                  \
            --strict-comments                       \
            --warc-header="Operator: Web Archiver"  \
            --warc-file="$WGDOMAIN"                 \
            --warc-dedup="${WGDOMAIN}.cdx"          \
            --warc-cdx=on 2> session.log
        ;;

        $2)
          wget "${WGDOMAIN}" -r -l INF -p           \
            --no-check-certificate                  \
            --strict-comments                       \
            --warc-header="Operator: Web Archiver"  \
            --warc-file="$WGDOMAIN"                 \
            --warc-dedup="${WGDOMAIN}.cdx"          \
            --warc-cdx=on 2> session.log
        ;;

        $1|$2)
          git add . && git ci -m"Archived: ${DATE}"
          git push origin "$x"
        ;;
    esac
done

1 个答案:

答案 0 :(得分:1)

在没有位置参数的情况下调用脚本将不会在case语句中执行任何操作,因为$ 1和$ 2是空的。除此之外,永远不会达到最后一个案例选项$ 1 | $ 2,因为之前的选项将匹配。也许你应该从案件中得到那些命令。