2009-11-07 36 views
2

我正在編寫一個腳本來搜索文件中的模式。例如如何在C shell中的命令行輸入設置多個單詞變量

腳本名模式文件1文件2 filenN

我用循環來遍歷參數argv的,如果所有的參數都提供它的工作。但是,如果只提供了一個參數(在這種情況下),它應該要求輸入文件名或名稱,然後檢查模式。我如何設置變量以包括從命令行輸入的多個單詞,以便我可以在循環中使用它。或者甚至更好的是可以將命令行輸入分配給argv,所以我不必僅僅因爲它是不同的變量名而使用相同的循環兩次(如果超過參數,則通過argv循環一次,然後循環遍歷文件名變量,如果只提供一個參數)。下面是我的腳本,這是造成問題的一部分:

set pattern = $1 
if ($#argv == 1) then 
    echo "Enter name of files" 
    set filenames = $< #how I can set it to accept more than word? 
endif 
+1

首先,如果它是在所有可能,你應該避免使用csh。它陷入了石器時代。 – 2009-11-07 21:12:37

+0

我知道,但這是在uni中使用的,不幸的是我們必須學習它 – Mike55 2009-11-08 11:21:04

+0

如果在輸入'file1 file2 file3'後回顯$ filenames',set filenames = $ <'的結果是什麼?它似乎爲我工作得很好。 – 2009-11-08 14:51:43

回答

1

您可以使用shift

#!/bin/csh 
set pattern = $1 
echo $pattern 
shift 
set remainder = "$argv" 
echo $remainder 

並運行它:

% ./demo a b c 
a 
b c 
+0

它回答了我的問題的第二部分,但如果只提供一個參數,我需要從鍵盤獲得額外的輸入。如果我在執行腳本時輸入文件缺少名稱(不作爲參數提供): file1 file2 file3 我想設置餘數來存儲file1 file2 file3。例如: 回聲 「輸入文件名」 組餘數= $ < 回波$其餘 輸出:文件1文件2 file3的 – Mike55 2009-11-08 14:15:32

相關問題