2012-02-11 25 views

答えて

2

Cシェルでは、未定義の変数を参照したくありません。そのため、スクリプトを実行する前に$HOSTTYPEを設定するか、またはスクリプトを修正して$HOSTTYPEが正しくなるように修正する必要があります。

Bourneシェルと派生関数は、未定義の変数をほとんどの場合空の文字列として扱います。

提案:プログラミングにCシェルを使用しないでください。参照:Csh Programming Considered Harmful

2

.shファイルをcshで起動する方法はありますか?

.cshという名前のcshスクリプトを指定する必要はありませんが、.shファイルは通常、Bourneまたはbashシェルスクリプトを意味します。

また、スクリプト名はビルドプロセスを意味します。ビルドは通常、Solaris、AIX、HPなどの古いUNIXシステム上のBourne(sh)、Linux用のbashのいずれかのデフォルトのシェルで行われます。

あなたはそれに先立つ任意のシェルなしbuild.shを実行することができます(スクリプトを自分で書かれているか、そうするように指示を与えられていない限り)。

ジョナサン・レフラーは言うとおりです。私はあなたがbuild.shを書いたか、あなたが提供するスクリプトを使用している、CSHだから

if (! $?HOSTNAME) then 
    setenv HOSTNAME `hostname` 
endif 

のように使用することができる「表記」$?varName、と空の変数を可能にしていることを追加しますか?

独自のcshスクリプトを作成した場合は、コードブロックを使用して、すべての変数のデフォルト値を確認して提供してください。変数。 (source $HOME/.env_fileのようにこれを達成する他の方法があります。$HOME/.env_fileには、スクリプトに必要なすべての変数の割り当てが記載されていなければなりません)。

提供されているスクリプトを使用している場合、Ubuntuのは、実際にはbashスクリプトと非常によく似ています。そのスクリプトの最初の行を見てください。それは#!/bin/bash(またはそれに類する)ですか?はい、スクリプトが実行するように設定されていることを確認するには、-rwxr-xr-xのようなものを見る必要があります。ビット。そうでなければ、chmod 755 build.shがそれを解決します。許可が実行できるようになると、./build.shを実行するだけです。

こちらがお役に立てば幸いです。

0

私も同様の問題に直面しました。

試用版:: tcsh build。SH

0

HOSTTYPEそれはman bashに記載されて、私たちはPOSIXは、ダウンロードしてgrepをすることによって、それを言及していないことを確認することができます

非POSIXバッシュの拡張である:Is there a listing of the POSIX API/functions?

したがって、それはその変数がcshに定義されていないということは驚くことではありません。

も参照してください。Detect the OS from a Bash script