異なるシェルで異なるコマンドを使用するスクリプトの作成

異なるシェルで異なるコマンドを使用するスクリプトの作成

シェルに依存しないスクリプトを書くには?kshshおよびで実行されているスクリプトを実行できるようにしたいですbash

たとえば、スクリプトにonの代わりwhence lsに実行される行がある場合は、次のような内容があります。kshsh

if (ksh)
then whence ls
if (sh)
then whereis ls

値を使用できますか$SHELL?それとも別の方法がありますか?

ベストアンサー1

Unixシェルスクリプトで一般的に見られるパターンの1つは、共通関数(たとえば)と呼ばれる実行可能ファイルの変数を使用することです$ECHO。その後、何を設定するかを決定する1つまたは2つの最上位関数があります$ECHO

一度設定すると、$ECHOコード全体に次のものが表示されます。

$ECHO "hi"

これにより、スクリプトの機能とはまったく関係がなく、スクリプトが使用するプラットフォームインタプリタだけを使用する多数の if..then..else ブロックをコードに追加する必要がなくなります。

したがって、実行中のインタプリタ/プラットフォームに基づいて交換したい重要なプログラムに対して同じことを行うことができます。

if (ksh)
then
  ECHO=echo1
  FILEFIND=whence
else if (sh)
  ECHO=echo2
  FILEFIND=whereis
else
  ECHO=echo3
  FILEFIND=which
fi

これをする必要がありますか?

スクリプトを移植可能にし、インタプリタや実行可能ファイルの可用性を考慮すると、最も低い共通分母、つまり/bin/sh

Oracleと他の企業がどのようにこれを行うかを見てください。通常使用するインストーラを提供します/bin/sh。これは、Solaris、AIX、Linux などのさまざまな Unix サポートを開始する際の最も一般的な分母です。

Novellが書いた後、タイトルのガイドをチェックしてください。スクリプトを移植可能にする。さまざまなシェルの系譜とその一部の共通コマンドセットを扱い、微妙な部分を処理する方法のヒントを提供します。

おすすめ記事