誰かが私を助けることができるかどうか疑問に思います。
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によって標準化されているので。-z
test
[
bash
bash
bash
bash
対話型セッションにいる場合は、次のように入力してこれらのユーティリティの組み込みバリアントに関するドキュメントを入手できます。 (これも可能ですが、テキストはマニュアルのみを参照してください。)help test
help [
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
また見なさい: