bashコマンドが見つかりません

bashコマンドが見つかりません

誰かが私を助けることができるかどうか疑問に思います。

if [ -z $1 ]; then                                                                                                                                                                                                                                                             
  user=$(whoami)                                                                                                                                                                                                                                                         
else                                                                                                                                                                                                                                                                           
  if [ ! -d "/home/$1" ]; then                                                                                                                                                                                                                                           
    echo "Requested $1 user home directory doesn't exist."                                                                                                                                                                                                         
    exit 1                                                                                                                                                                                                                                                         
  fi                                                                                                                                                                                                                                                                     
  user=$1                                                                                                                                                                                                                                                                
fi 

私はいくつかのbashコマンドを操作していて、2つのコマンドを見ました:-z-d。私は彼らが何をしているのかを知っています(最初に空の変数をチェックし、2番目にディレクトリが存在するかどうかを確認します)。私の質問は、これらのコマンドの説明を見つける方法です(ig manページ-d / -z)。 if-else文でのみ使用できますか?

答え1

コマンドではなく、-dユーティリティのオプションです。これらのユーティリティはマニュアルに組み込まれて文書化されています。これらのユーティリティとフラグもPOSIXによって標準化されているので。-ztest[bashbashbash

bash対話型セッションにいる場合は、次のように入力してこれらのユーティリティの組み込みバリアントに関するドキュメントを入手できます。 (これも可能ですが、テキストはマニュアルのみを参照してください。)help testhelp [test

man test動作する必要man [があります。このマニュアルでは、以下を説明します。外部ユーティリティは、おそらくデフォルトで使用されるユーティリティの代わりと/bin/testです。/bin/[bash

例えば、

! test -z "$dir" && test -d "$dir" && printf '%s is a directory' "$dir"

まったく同じ

! [ -z "$dir" ] && [ -d "$dir" ] && printf '%s is a directory' "$dir"

または必要に応じて

if ! test -z "$dir" && test -d "$dir"; then
    printf '%s is a directory' "$dir"
fi

そして

if ! [ -z "$dir" ] && [ -d "$dir" ]; then
    printf '%s is a directory' "$dir"
fi

(おそらくor! [ -z "$dir" ]でより一般的に書かれます。上記のテストは質問で言及されているので、私はそれを使っていて、空の文字列のテストはとにかく失敗します。)[ ! -z "$dir" ][ -n "$dir" ]-z-d

また見なさい:

関連情報