2012-02-11 17 views

回答

2

C Shell不喜歡你引用未定義的變量。因此,在運行腳本之前,您需要設置$HOSTTYPE,或者修復腳本,以便它自己確定$HOSTTYPE正確。

Bourne shell和衍生產品大多數時間將未定義的變量視爲空字符串。

建議:不要使用C Shell進行編程。請參閱:Csh Programming Considered Harmful

2

您是否有指示啓動.sh文件與csh

雖然沒有必要命名.csh.sh文件通常意味着Bourne或bash shell腳本的csh腳本。

此外,您的腳本名稱意味着構建過程。通常使用默認外殼完成構建,或者在Solaris,AIX,HP等舊UNIX系統上使用Bourne(sh),對於Linux則使用bash

您應該可以在沒有任何shell之前運行build.sh(除非您自己編寫腳本或已經給出了指令來執行此操作)。

Jonathan Leffler說的都是真的。我想補充一點,CSH確實允許空變量的「符號」 $?varName,它可以像

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

所以可以使用,你寫的build.sh或者你使用提供的腳本?

如果您已經編寫了自己的csh腳本,請使用該代碼塊檢查變量的所有並提供默認值。 (還有其他方法可以實現此目標,如source $HOME/.env_file,您必須在其中創建一個$HOME/.env_file,其中列出了腳本需要的所有變量賦值)。

如果您使用的是提供的腳本,在Ubuntu上非常像它真的是bash腳本。看看該腳本的第一行,是否說#!/bin/bash(或類似的),如果是,確認腳本設置爲執行,ls -l build.sh,你需要在行的前面看到類似-rwxr-xr-x的東西,'x是鍵位。如果沒有,那麼chmod 755 build.sh將解決這個問題。一旦權限允許執行,只需運行./build.sh

我希望這會有所幫助。

0

我也面臨類似的問題。

Try :: tcsh build。SH