2016-05-18 6 views
0

にPOSIXのSHから正しく「test」を変換し、私は正しくのような簡単なテストを翻訳することができていません... ash、bash、ksh、&など現代のPOSIXシェルでサポートされているようにc。のみ、プレーンBourneシェルを持っている古いSolarisの古いプレーンなBourneシェル

お願いします。

+1

'$()'拡張が機能しない可能性があります。代わりにバッククォートを試してみてください。 – jamieguinan

+0

試した[-d '/ export/home/mydir' -o! -e '/ export/home/mydir' -a -d 'dirname '/ export/home/mydir'']しかし、" unknown operator'/export/home/mydir '"があります。 –

+0

バッククォートが前のコメントに表示されていません。 –

答えて

2

ポータブルシェルスクリプトでは、andorには-a-oを使用しないでください。さらに、他の人がコメントしたように、$()拡張機能は利用できないかもしれませんが、逆戻りします。

は、代わりにこれを試してみてください:

if [ -d '/export/home/mydir' ] || [ ! -e '/export/home/mydir' ] && [ -d `dirname '/export/home/mydir'` ]; then 

[が利用できない場合、あなたはtest代わりの[を使用する必要があると閉じ] Sを削除することができます。

参考として、writing portable shell scriptsのガイドを参考にしてください。

+0

私はIFS = /で呼び出される場合や、空白を含むディレクトリ名を持つ場合に備えて、おそらくバックティックの前後に二重引用符を追加するべきでしょう。 –

+0

素晴らしい!魅力のように働く...唯一のことは、「テスト」(大括弧なし)を使用することを余儀なくされたと仮定すると、(ANDとORの中で)用語をグループ化する方法は? –

+0

OK、カッコが通常どおり動作することを確認していますので、テストで問題はありません。ありがとう。 –

関連する問題