問題の解決中に、私たちのアプリケーションで使用されているシェルスクリプトの1つで以下に提供されているこれらの項目を見つけました。これはもはや会社に通っていない人が書いた文ですが、スクリプトが何をしているのかをじっくり調べようと努力しています。環境変数$ PAT_HOMEがあります。両端で使用すると、%
$ PAT_HOMEのような環境変数を呼び出すのでしょうか?この場合、%記号を使用することは、環境変数を使用するときとどう違いますか?
echo "cd " %PAT_HOME%
cd %PAT_HOME%
# P:
echo "pan.sh -file $kmrfile $logfile_location $csvfile"
cd $PAT_HOME
sh pan.sh -file $kmrfile $logfile_location $csvfile
答え1
UnixシェルスクリプトとDOSバッチスクリプトを混在させたようです。 :)
DOSは環境変数を束ねてアクセスします%
。と似ています%PATH%
が、Linuxではこれを行うことはできません。
一度試してください
$ echo %PATH%
%PATH%
環境変数は拡張されません。しかし、このスクリプトは本当に機能しますか?なぜなら、スクリプトの後半では変数が を介してアクセスされますが、親$
部分は を介してアクセスされるからです%
。ほとんどの場合cd %PAT_HOME%
、名前付きファイルがないと、そのセクションでエラーが発生します%PAT_HOME%
。
答え2
LinuxスクリプトシェルはWindows CMDスクリプトと100%互換性がなく、調整が必要です。
この記事を見てください
しかし、必要に応じてWindows CMDスクリプトを作成し、「wine cmd」を使用してテストすることができ、ワインやWindowsでも100%動作します。
環境変数が異なるため、一部の内容を異なる方法で作成する必要があります。