Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 从参数中获取字符串的第一个单词_Bash_Shell - Fatal编程技术网

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

Bash 从参数中获取字符串的第一个单词,bash,shell,Bash,Shell,基本上,我想做的是创建一个if条件,来评估程序是否是用一个特定的参数启动的 基本上,你有三个项目的启动选项 ./testprogram 或 我想做的是,确定程序是否已经启动,并带有其中一个参数。以下是发布选项: 如果在没有参数的情况下启动,它将设置为当前工作目录 如果异常启动,它将执行特定任务 如果使用DIR启动,它会将DIR设置为set参数 所以我创建了以下函数 parse_arg(){ # when launched with no argument, fairly self ex

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

基本上,你有三个项目的启动选项

./testprogram

我想做的是,确定程序是否已经启动,并带有其中一个参数。以下是发布选项:

  • 如果在没有参数的情况下启动,它将设置为当前工作目录
  • 如果异常启动,它将执行特定任务
  • 如果使用DIR启动,它会将DIR设置为set参数
所以我创建了以下函数

parse_arg(){
  # when launched with no argument, fairly self explanatory
  if [[ $# == '0' ]]; then
     DIR="$PWD"
     DIR=$DIR
  fi
现在是棘手的部分,我需要找出一种方法,来检查第二个参数是-i exception还是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工具的性质,它最终还是会将其打印到标准输出,而我只想计算if条件的表达式


那么有什么更优雅的解决方案吗?

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

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

我有几个问题:(1)DIR=$DIR的作用是什么?(2) 为什么要剪切
$1
中的单词?对
testprogram
的正确调用具有
$1=-i
$1=someDir
“-i”
仅仅是一个单词,
someDir
可能不应该被拆分。(3) 您希望如何处理拆分的单词:将所有单词放入一个数组,只提取第n个单词,…?您正在查找
shift
?另外,请阅读和。我有多个问题:(1)DIR=$DIR的作用是什么?(2) 为什么要剪切
$1
中的单词?对
testprogram
的正确调用具有
$1=-i
$1=someDir
“-i”
仅仅是一个单词,
someDir
可能不应该被拆分。(3) 您希望如何处理拆分的单词:将所有单词放入一个数组,只提取第n个单词,…?您正在查找
shift
?此外,请阅读和。此外,对于更简单的需求(如无长选项),可以使用内置的
getopts
。此外,对于更简单的需求(如无长选项),可以使用内置的
getopts
I_DETECT=$(echo I_DETECT | awk '{print $1;})' 

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