【发布时间】:2009-11-07 15:02:37
【问题描述】:
我正在编写一个脚本来搜索文件中的模式。例如
脚本名称模式 file1 file2 filenN
我使用 for 循环遍历参数 argv,如果提供了所有参数,它就可以完成这项工作。但是,如果只提供了一个参数(在这种情况下为 pattern ),它应该要求输入一个或多个文件名,然后检查模式。我如何设置变量以包含从命令行输入的多个单词,以便我可以在循环中使用它。或者甚至更好的是可以将命令行输入分配给 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
【问题讨论】:
-
首先,如果可能的话,您应该避免使用 csh。它停留在石器时代。
-
我知道,但这是在 uni 使用的,不幸的是我们必须学习它
-
如果你在输入
file1 file2 file3后echo $filenames,set filenames = $<的结果是什么?这对我来说似乎工作得很好。 -
这是我的错。出于某种原因,我删除了 = 之后的空格,所以 set filename =$