2つのディレクトリを比較するbashスクリプトを作成していますが、条件を確認する方法がわかりません。
たとえば、ユーザーが2つの代わりに1つの引数を入力した場合(2つのディレクトリを比較するため2つが必要です)、エラーが発生するはずです。両方の引数が有効な場合、ディレクトリは比較され、ファイルに出力されます。
答え1
処理パラメータ
スクリプトコマンドラインを介して渡されたパラメータを処理する方法は、以下のように非常に簡単です。次のスクリプトがあるとしましょう。
$ cat cmd.bash
#!/bin/bash
echo "arg1: $1"
echo "arg2: $2"
これで引数なしで実行します。
$ ./cmd.bash
arg1:
arg2:
パラメータが1つあります。
$ ./cmd.bash hi
arg1: hi
arg2:
2つのパラメータがあります:
$ ./cmd.bash hi bye
arg1: hi
arg2: bye
パラメータの確認
その後、パラメータ1と2が有効なディレクトリであることを確認し、必要に応じて終了または続行できます。したがって、2つのパラメータがディレクトリであることを確認し、そうでなければ終了するために2つのチェックを導入します。
$ cat cmd.bash
#!/bin/bash
[ -d "$1" ] || exit
[ -d "$2" ] || exit
[ $# == 2 ] || exit
echo "arg1: $1"
echo "arg2: $2"
はい
これらのディレクトリがあるとしましょう。
$ mkdir d1 d2
$ ls -l
total 12
-rwxrwxr-x. 1 saml saml 89 Oct 14 23:13 cmd.bash
drwxrwxr-x. 2 saml saml 4096 Oct 14 23:14 d1
drwxrwxr-x. 2 saml saml 4096 Oct 14 23:14 d2
2つのディレクトリ以外のディレクトリが与えられると、スクリプトは直接終了します。
$ ./cmd.bash hi bye
ディレクトリが2つある場合:
$ ./cmd.bash d1 d2
arg1: d1
arg2: d2
2つ以上のパラメータを提供する場合:
$ ./cmd.bash d1 d2 d3
これら2つのディレクトリの比較はあなたに任せます。 Bashを学ぶには、以下のBashの無料オンラインブックリンクをご案内します。