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