如何在C shell中从命令行输入设置多个单词变量

时间:2009-11-07 15:02:37

标签: shell variables argv

我正在编写一个脚本来搜索文件中的模式。例如

scriptname pattern file1 file2 filenN

我使用for循环遍历参数argv,如果提供了所有参数,它就可以完成工作。但是,如果只提供了一个参数(在这种情况下是模式),它应该要求输入文件名或名称,然后检查模式。如何设置变量以包含从命令行输入的多个单词,以便我可以在循环中使用它。或者更好的是可以将命令行输入分配给argv,所以我不必仅使用相同的循环两次因为它是不同的变量名(一个循环通过argv,如果多于参数,第二个循环通过filenames变量,如果只提供一个参数)。以下是我的脚本中导致问题的部分:

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 个答案:

答案 0 :(得分:1)

您可以使用shift$argv

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

运行它:

% ./demo a b c
a
b c