1

bashの[テスト]と[[テスト]]の違いは何ですか? 一方が他方よりも適切なのはいつ;で、最後に何をしますか?

if  [[ -z $DIRECTORY ]];
then
     DIRECTORY=html
fi

if [ ! -d "$DIRECTORY" ]; then
    echo installation directory "'${DIRECTORY}'" does not exist
    exit 1
fi
4

3 に答える 3

3

[[[コマンドに似た (しかしより強力な) bash キーワードです。http://mywiki.wooledge.org/BashFAQ/031およびhttp://mywiki.wooledge.org/BashGuide/TestsAndConditionalsを参照してください。POSIX sh 用に作成している場合を除き、[[.

于 2013-01-20T14:15:27.643 に答える
0

通常、次の場合に単一の角括弧を使用します。

  • ファイルで何かをチェックし、パターンを使用したい (例: アスタリスク):if [ -L $file ]; then
  • 算術式をチェックします。if [ $a -lt $b ]; then
  • " "文字列で何かをチェックし、特殊文字を通常どおりに使用および処理したい(例: アスタリスク):if [ -z "$string" ]; then

通常、次の場合は角括弧を二重にします。

  • 文字列でパターンを使用したい (例: アスタリスク):if [[ "$string1" == *[sS]tring* ]]; then
  • ファイル名のブロック パターン (例: アスタリスク) 例: *.sh という名前のファイルを検索します。if [[ -a *.sh ]]; then
  • 演算子 && と || を使用したい:if [[ $a == 3 || $b == 4]]; then
  • 文字列を入れたくない" "
于 2013-01-20T14:45:45.737 に答える
0

[はシェル用、[[は bash 用です。

例:
Try [ $A -eq 1 ]:$Aが設定されていない場合、エラーが発生します。
[[ $A -eq 1 ]]動作します。

于 2013-01-20T14:51:07.647 に答える