2014-03-26 27 views
2

我是一個非常新的用戶,所以請耐心等待。 我試圖運行一個bash腳本,將採取從命令行輸入,然後運行一個c程序,其輸出到其他c程序。在腳本內在BASH中從命令行創建變量

$ ./script.sh -flag file1 < file2 

的我會:: 例如,在命令行我將進入如下

./c_program -flag file1 < file2 | other_c_program 

問題是,-flagfile1file2需要是可變的。 現在我知道,-flag和文件,這是相當簡單 - 我可以做

FLAG=$1 
FILE1=$2 
./c_program $FLAG FILE1 

我的問題是:是否有到腳本中的變量分配給file2的方法嗎?

編輯: 這是該腳本稱爲 $ ./script.sh -flag文件1 <文件2

回答

1

您可以簡單地運行./c_program正是因爲你擁有了它,它會繼承程序的要求從父腳本的標準輸入。它將從其父進程正在讀取的任何地方讀取。

FLAG=$1 
FILE1=$2 
./c_program "$FLAG" "$FILE1" | other_c_program # `< file2' is implicit 

另外,引用變量擴展是一個好主意。這樣,如果$FILE1包含空格或其他棘手的字符,腳本仍然可以工作。

+0

奇怪。前幾次我做到了這一點,我得到了一個seg故障...然後它開始工作正常。謝謝!只需要在我的C代碼中解決一些問題我猜 – HappyPrime

1

有沒有簡單的方法來做你在問什麼。這是因爲當你運行這個命令:

$ ./script.sh -flag file1 < file2 

它解釋命令將打開file2讀取和管其內容script.sh外殼。您的腳本永遠不會知道該文件的名稱是什麼,因此無法將該名稱存儲爲變量。但是,你可以調用你的腳本是這樣的:

$ ./script.sh -flag file1 file2 

然後,它是非常簡單 - 你已經知道如何讓file1,並file2是一樣的。

+0

有沒有什麼方法可以將腳本中的file2傳輸到./c_program中?不幸的是我必須有 HappyPrime

+1

絕對:只是無所事事,c_program會從標準輸入讀取。不要在腳本中執行'