2

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

脚本名模式 file1 file2 filenN

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

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
4

1 回答 1

1

您可以使用shift$argv

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

并运行它:

% ./demo a b c
a
b c
于 2009-11-07T21:14:51.380 回答