シェルスクリプトディレクトリパスで$ 1を処理します。

シェルスクリプトディレクトリパスで$ 1を処理します。

私のスクリプトのこの部分は最近まで完全に機能しましたが、$ 1を使用してディレクトリパスを指定するとファイルが見つからないというエラーが発生します。私が知っている唯一の違いは、rhel 7にアップグレードした後に動作が停止したことです。

これはスクリプトの一部です。

MOUNTINST=/opt/mqm80_Inst1

$1/crtMQdir.ksh $MOUNTINST/bin 755 mqm
$1/crtMQdir.ksh $MOUNTINST/logs 755 mqm
$1/crtMQdir.ksh $MOUNTINST/java/lib/soap 755 mqm

正しいディレクトリパスにあり、ファイルがあることを確認してください。

   /var/mqm/trace/WMQUNX8000.02]
    $ ll *crt*
    -rwxr-xr-x. 1 mqm mqm 826 Apr 10  2014 crtMQdir.ksh

私が得るエラーは次のとおりです。

./test5.sh: line 4: /crtMQdir.ksh: No such file or directory
./test5.sh: line 6: /crtMQdir.ksh: No such file or directory
./test5.sh: line 8: /crtMQdir.ksh: No such file or directory

私は何を逃したことがありませんか?

ベストアンサー1

$1スクリプトの最初の引数と同様に、パスをスクリプトの引数として渡す必要があります。

これは、パスとスクリプト名(スクリプトのフルパスなど)が必要な場合に/path/to/crtMQdir.ksh必要です$0

kshまた、スクリプトに実行権限があることを確認する必要があります。chmod +x /path/to/crtMQdir.ksh

現在のディレクトリで実行したい場合は、別の方法は現在のスクリプトを単純に置き換えることです$1$PWDスクリプトと同じディレクトリを使用するには、を使用することも$(dirname $0)できます$1

おすすめ記事