2013-01-06 61 views
0

我正在嘗試創建一個腳本來完成簡單的任務。我需要提示用戶回覆問題,輸入yes或no。該腳本是爲csh編寫的,但在默認用戶shell是bash時不起作用。我的環境是Red Hat企業版Linux 5在bash和csh中讀取用戶輸入

#!/bin/csh -f 
echo -n Type yes to continue 
set answer = $< 
#... 

此代碼工作正常CSH但不使用bash它打印以下錯誤:

syntax error near unexpected token 'newline' 
bash 'set answer =$<' 

我真的需要有相同的腳本工作兩殼(我認爲這是在文件的開頭放#!/bin/csh的目的!)

我真的不知道如何修改我的腳本,使其在bash中工作。請問你能幫幫我嗎?非常感謝你的幫助。

+1

第一行應該啓動正確的shell。你如何運行腳本? – choroba

回答

2

很難想象比csh和bash多兩個不同的shell。他們是不同的語言,你不能期望csh代碼在bash中工作,或者相反。

在bash中,您使用shell內建的read從STDIN中讀取,在csh中使用構造$<。不同的語言。

我真的需要有相同的腳本爲殼工作爲什麼?當你在腳本開始處放置#!/bin/csh時,它將運行c-shell,使用#!/bin/bash然後它將運行bash。常見錯誤是在#!之前有空格或其他字符,它們必須絕對是文件中的前兩個字節。

+1

...但將它移植到Bash並放棄Csh會好得多。另請參見http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ – tripleee

+0

同意,但在csh中狂野的書寫形式中有很多遺留的腳本,轉換它們需要花費。 – cdarke