从参数中获取字符串的第一个单词

时间:2017-03-17 13:54:06

标签: bash shell

基本上我要做的是创建一个if条件来评估程序是否已使用特定参数启动。

基本上,您有三个程序启动选项

./testprogram

./testprogram [-i EXCEPTION] DIR

我要做的是,确定程序是否已使用其中一个参数启动。以下是启动选项:

  • 如果没有参数启动,它将设置为当前工作目录
  • 如果异常启动它将执行特定任务
  • 如果使用DIR启动,则会将DIR设置为设置参数

所以我创建了以下函数

parse_arg(){
  # when launched with no argument, fairly self explanatory
  if [[ $# == '0' ]]; then
     DIR="$PWD"
     DIR=$DIR
  fi

现在这里是一个棘手的部分,我需要弄清楚一种方法,检查第二个细分是-i异常还是简单的dir,换句话说,我只是不能说明我们用它启动它的论点数量。我试图做的是创建一个参数来帮助我建立if条件

I_DETECT="$1" 现在我不确定是否,如何在保持空格控制的同时基本上切割字符串中的单词。

我能想到的唯一方法就是基本回应它然后使用cut函数。问题是,我需要回应它

我试过这个

I_DETECT=$(echo I_DETECT | awk '{print $1;})' 

  elif [[ $# == '1' && $I_DETECT != "-i" ]] then;
  ... #you get the point

问题是awk工具的性质它仍然最终将它打印到STDOUT,当我想要的只是评估if条件的表达式。

那么有什么想法可以提供更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:0)

getopt是解析参数的好方法,包括--long-options。这将避免这项工作中最繁琐的部分。