括弧
括弧は、一重括弧[]と二重括弧[[]]に分けられます。角括弧は一般に式の判定に使用されますが、括弧は後述する式にも使用できます。
単一角かっこ []
A=5 B=3 [ $A -eq $B ] 判断A是否等于B [ ${A} -eq ${B} ] 作用同上 [ "${A}" -eq "${B}" ] 作用同上
演算子と演算子の間にはスペースも必要です
変数は $ で直接参照することも、${} で参照することもできますそして「${} ${} を直接使用することもできますが、"${} " を使用するか、 $ を直接使用して変数を引用することをお勧めします
文字列は二重引用符で囲む必要があります
文字列の比較では、通常、== を使用して、文字列が同じであり、サイズ比較には < または > を使用します。括弧内の文字を大なり小なり比較するには、transfer > を使用します。比較の原則は ASCII を比較することです。
さらに、単一角括弧内で -a や -o などの論理演算子を使用することもできます
二重角括弧 [[]]:
A=ABC [ $A == "ABC" ] 或写成 [ ${A} == "ABC" ] 或写成 [ "${A}" == "ABC" ] [ $A \> "ABC" ]
[ -d ./aaa.sh -a -e ./bbb ] 测试aaa.sh是否为目录并且bbb是否存在,如果都符合则返回真 [ -d ./aaa.sh -o -e ./bbb ] 测试aaa.sh是否为目录并且bbb是否存在,满足一个条件则返回真
A=5 B=3 [[ $A -eq $B ]] 判断A是否等于B [[ ${A} -eq ${B} ]] 作用同上 [[ "${A}" -eq "${B}" ]] 作用同上
二重角括弧間の文字列の大小比較はエスケープする必要はなく、文字列は二重引用符なしで引用できます
二重角括弧内で使用できます &&、|| は論理演算子として使用できます
二重括弧内であいまい一致を行うこともできます。 =~式 2 は正規表現にすることもできます
A=ABC [[ $A == "ABC" ]] 或写成 [[ ${A} == "ABC" ]] 或写成 [[ "${A}" == "ABC" ]] 或写成 [[ $A == ABC ]] [[ $A > "ABC" ]]
[[ -d ./aaa.sh && -e ./bbb ]] 测试aaa.sh是否为目录并且bbb是否存在,如果都符合则返回真 [[ -d ./aaa.sh || -e ./bbb ]] 测试aaa.sh是否为目录并且bbb是否存在,满足一个条件则返回真
単一括弧 括弧単独で使用される単一括弧はコマンドグループを表し、括弧内のコマンドはサブシェルを通じて順番に実行されます
A=ABC [[ $A =~ "A" ]] 做模式匹配,这个表达式为真 或写成 [[ ${A} =~ "A" ]] 或写成 [[ "$[A]" =~ "A" ]] [[ $A = A* ]] 表达式为真 [[ $A = B* ]] 表达式为假
[ 表达式1 -a 表达式2 ] 等效于 [[ 表达式1 && 表达式2 ]] 等效于 [ 表达式1 ] && [ 表达式2 ] 等效于 [[ 表达式1 ]] && [[ 表达式2 ]]
二重括弧
は算術演算でよく使用され、for ループでも使用されます
[ 表达式1 -o 表达式2 ] 等效于 [[ 表达式1 || 表达式2 ]] 等效于 [ 表达式1 ] || [ 表达式2 ] 等效于 [[ 表达式1 ]] || [[ 表达式2 ]]
。 For文
1〜10ループ実行
(ls ./;echo "hello";mkdir -p /tmp/ccc)
echo "当前目录是:$(pwd)" echo "当前目录是:`pwd`"