/usr/bin/bash: Difference between revisions

Line 1,056: Line 1,056:


== CONDITIONAL EXPRESSIONS ==
== CONDITIONAL EXPRESSIONS ==
      Conditional  expressions  are used by the [[ compound command and the test and [ builtin commands
条件式は、<nowiki>[[</nowiki> 複合コマンド、test および [ 組み込みコマンドで使用され、ファイル属性のテストや文字列比較、算術比較を実行する。 testコマンドと<nowiki>[</nowiki> コマンドは、引数の数に基づいて動作を決定する。その他のコマンド固有の動作については、これらのコマンドの説明を参照のこと。
      to test file attributes and perform string and arithmetic comparisons.  The test and  [ commands
      determine their behavior based on the number of arguments; see the descriptions of those commands
      for any other command-specific actions.


      Expressions are formed from the following unary or binary primaries.  Bash handles several  file‐
式は、以下の単項または二項のプライマリから形成される。 Bashは、いくつかのファイル名が式の中で使われている場合、それらを特別に扱う。 bashが動作しているオペレーティング・システムがこれらの特別なファイルを提供している場合、bashはそれらを使用する: プライマリの1つのファイル引数が/dev/fd/nの場合、ファイル記述子nがチェックされる。 プライマリへのファイル引数が /dev/stdin、/dev/stdout、/dev/stderr のいずれかである場合、 それぞれファイル記述子 0、1、2 がチェックされる。
      names specially when they are used in expressions.  If the operating system on which bash is run‐
      ning provides these special files, bash will use them; otherwise it will emulate them  internally
      with  this  behavior: If any file argument to one of the primaries is of the form /dev/fd/n, then
      file descriptor n is checked.  If the file argument to one of the primaries is one of /dev/stdin,
      /dev/stdout, or /dev/stderr, file descriptor 0, 1, or 2, respectively, is checked.


      Unless  otherwise specified, primaries that operate on files follow symbolic links and operate on
特に指定がない限り、ファイルを操作するプライマリはシンボリックリンクに従い、リンクそのものではなくリンク先を操作する。
      the target of the link, rather than the link itself.


      When used with [[, the < and > operators sort lexicographically using the  current locale.  The
<nowiki>[[</nowiki>と一緒に使うと、<nowiki><[</nowiki> 演算子と <nowiki>></nowiki> 演算子は、現在のロケールを使って辞書順にソートする。 testコマンドはASCII順序でソートする。
      test command sorts using ASCII ordering.


      -a file
:;-a file
              True if file exists.
::ファイルが存在するならば True
      -b file
:;-b file
              True if file exists and is a block special file.
::ファイルが存在し、ブロックスペシャルファイルならば True
      -c file
:;-c file
              True if file exists and is a character special file.
::ファイルが存在し、キャラクタースペシャルファイルならば True
      -d file
:;-d file
              True if file exists and is a directory.
::ファイルが存在し、ディレクトリーならば True
      -e file
:;-e file
              True if file exists.
::ファイルが存在するならば True
      -f file
:;-f file
              True if file exists and is a regular file.
::ファイルが存在し、、レギュラーファイルならば True
      -g file
:;-g file
              True if file exists and is set-group-id.
::ファイルが存在し set-group-id ならば True
      -h file
:;-h file
              True if file exists and is a symbolic link.
::ファイルが存在し、シンボリックリンクならば True
      -k file
:;-k file
              True if file exists and its ``sticky'' bit is set.
::ファイルが存在し、その``sticky'' ビットがセットされているならば True
      -p file
:;-p file
              True if file exists and is a named pipe (FIFO).
::ファイルが存在しファイルが存在し、名前付きパイプ(FIFO)であれば True
      -r file
:;-r file
              True if file exists and is readable.
::ファイルが存在し、readableであれば True
      -s file
:;-s file
              True if file exists and has a size greater than zero.
::ファイルが存在し、0より大きいファイルサイズであれば True
      -t fd  True if file descriptor fd is open and refers to a terminal.
:;-t fd   
      -u file
::ファイル記述子fdがオープンされていて、端末を参照していれば True
              True if file exists and its set-user-id bit is set.
:;-u file
      -w file
::ファイルが存在し、その set-user-id bitがセットされていれば True
              True if file exists and is writable.
:;-w file
      -x file
::ファイルが存在し、writableであるならば True
              True if file exists and is executable.
:;-x file
      -G file
::ファイルが存在し、executableであるならば True
              True if file exists and is owned by the effective group id.
:;-G file
      -L file
::ファイルが存在し、有効なグループIDが所有していれば、True
              True if file exists and is a symbolic link.
:;-L file
      -N file
::ファイルが存在し、シンボリックリンクであれば、True
              True if file exists and has been modified since it was last read.
:;-N file
      -O file
::ファイルが存在し、最後に読み込まれてから変更されていれば True
              True if file exists and is owned by the effective user id.
:;-O file
      -S file
::ファイルが存在し、有効なユーザIDに所有されていれば True
              True if file exists and is a socket.
:;-S file
      file1 -ef file2
::ファイルが存在し、ソケットであれば True
              True if file1 and file2 refer to the same device and inode numbers.
:;file1 -ef file2
      file1 -nt file2
::file1とfile2が、同じデバイスとinode番号に参照されていれば True
              True if file1 is newer (according to modification date) than file2, or if file1 exists and
:;file1 -nt file2
              file2 does not.
::file1がfile2より(更新日付に従って)新しい場合、またはfile1が存在しfile2が存在しない場合、True
      file1 -ot file2
:;file1 -ot file2
              True if file1 is older than file2, or if file2 exists and file1 does not.
::file1がfile2より古い場合、またはfile2が存在しfile1が存在しない場合に True
      -o optname
:;-o optname
              True if the shell option optname is enabled.  See the list of options under  the  descrip‐
::シェル・オプション optname が有効なら True。以下のset組み込み関数の-oオプションの説明の下にあるオプションのリストを参照のこと。
              tion of the -o option to the set builtin below.
:;-v varname
      -v varname
::シェル変数varnameが設定されている(値が割り当てられている)場合は True
              True if the shell variable varname is set (has been assigned a value).
:;-R varname
      -R varname
::シェル変数 varname が設定されていて、名前参照であれば True
              True if the shell variable varname is set and is a name reference.
:;-z string
      -z string
::文字列の長さが 0であれば True
              True if the length of string is zero.
:;string
      string
:;-n string
      -n string
::文字列の長さが 0以外であれば True
              True if the length of string is non-zero.


      string1 == string2
:;string1 == string2
      string1 = string2
:;string1 = string2
              True  if  the strings are equal.  = should be used with the test command for POSIX confor‐
::POSIXに準拠するためには、testコマンドと一緒に使う必要がある。 <nowiki>[[</nowiki>コマンドと一緒に使うと、上記の(Compound Commands)で説明したパターンマッチングを行う。
              mance.  When used with the [[ command, this performs pattern matching as  described  above
              (Compound Commands).


      string1 != string2
:;string1 != string2
              True if the strings are not equal.
::文字列が等しくなければ True


      string1 < string2
:;string1 < string2
              True if string1 sorts before string2 lexicographically.
::文字列1が文字列2より辞書順に先にソートされていれば True


      string1 > string2
:;string1 > string2
              True if string1 sorts after string2 lexicographically.
::文字列1が文字列2の後に辞書式にソートされていれば True


      arg1 OP arg2
:;arg1 OP arg2
              OP  is  one  of -eq, -ne, -lt, -le, -gt, or -ge.  These arithmetic binary operators return
::OPは-eq、-ne、-lt、-le、-gt、-geのいずれかである。これらの算術二項演算子は、それぞれ arg1 arg2 と等しい、等しくない、未満、以下、以上、または以上の場合に true を返します。arg1とarg2は、正または負の整数である。<nowiki>[[</nowiki>コマンドと併用すると、Arg1とArg2は算術式として評価される(上記の[[#ARITHMETIC EVALUATION|ARITHMETIC EVALUATION ]]を参照)。
              true if arg1 is equal to, not equal to, less than, less than or equal to, greater than, or
              greater  than  or  equal to arg2, respectively.  Arg1 and arg2 may be positive or negative
              integers.  When used with the [[ command, Arg1 and Arg2 are evaluated  as  arithmetic  ex‐
              pressions (see ARITHMETIC EVALUATION above).


== SIMPLE COMMAND EXPANSION ==
== SIMPLE COMMAND EXPANSION ==