【问题标题】:How to set mutiple words variable from command line input in C shell如何在 C shell 中从命令行输入设置多个单词变量
【发布时间】: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 file3echo $filenamesset filenames = $&lt;的结果是什么?这对我来说似乎工作得很好。
  • 这是我的错。出于某种原因,我删除了 = 之后的空格,所以 set filename =$

标签: shell variables argv


【解决方案1】:

您可以使用shift$argv

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

并运行它:

% ./demo a b c
a
b c

【讨论】:

  • 它回答了我问题的第二部分,但如果只提供一个参数,我需要从键盘获取额外的输入。如果我在执行脚本时键入缺少文件名(未作为参数提供):file1 file2 file3 我想将剩余部分设置为存储 file1 file2 file3。例如: echo"Enter name of files" set remaining= $
猜你喜欢
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多