0

z/OS で Bash スクリプトを更新しています。現在のスクリプトは、backtick コマンドの結果を使用して、次のように特定の条件をテストします。

var=`command`
[test value of var]

問題は、ある顧客が /tmp ディレクトリーにアクセスできず、z/OS が /tmp 内のファイルを使用してバックティック コマンドの中間データを保持していることです。

/tmp アクセシビリティの backtick コマンドの前にテストを行い、それに応じてスクリプトの動作を変更できると思います。しかし、私はそれを行う良い方法を見つけていません。助言がありますか?

4

2 に答える 2

4

bash では、testビルトインを使用してファイルのアクセス許可をテストできます。

したがって、ディレクトリであるかtest -d /tmpどうかを確認したり、書き込み可能かどうかをテストしたりするために使用できます。/tmptest -w /tmp/tmp

同様[の同義語としてthe を使用することもできますtest

if [ -d /tmp -a -w /tmp ] ; then 
    echo "/tmp is a directory and writable"
fi

help testbashで参照してください。利用可能なすべてのテストについて説明します。

別のこと: プログラムは、一時データに使用するディレクトリを指定できる場合があり、環境変数sort -T /home/user/tmpを反映する場合もあります。TMPDIRバッククォート内で実行するプログラムによって異なります。

于 2013-03-12T20:36:54.683 に答える
3

if [[ -w /tmp ]]...は、現在のユーザーが への書き込みアクセス権を持っているかどうかをテストします/tmp

別の選択肢があるかもしれません。私は z/OS を持っていませんが、一部の UNIXTMPDIRには一時ディレクトリに設定できる変数があります。たとえば、次のようになります。

export TMPDIR="$HOME"

動作する可能性があります。

別の注意として、バッククォートは一般的に非推奨であると考えられています。var=$(command)代わりに使用してください。

于 2013-03-12T20:37:08.053 に答える