基本上我想要做的是创建一个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_DETECT="$1"
现在是什么我不知道,如果,如何削减基本的话里面的字符串,同时也保持空白控制。
只有我能想到的方法是基本回显出来,然后使用剪切功能。问题是,我需要回声它
我想这
I_DETECT=$(echo I_DETECT | awk '{print $1;})'
elif [[ $# == '1' && $I_DETECT != "-i" ]] then;
... #you get the point
问题是使用awk工具的性质,它最终还是打印出来到标准输出,当所有我想要的是评估表达式if条件。
因此,任何想法更优雅的解决方案?
我有很多问题:(1)“DIR = $ DIR”的缺点是什么? (2)你为什么想要削减'$ 1'中的单词?一个正确的'testprogram'调用要么有'$ 1 = -i'或'$ 1 = someDir'。 ''-i“'只有一个字,'someDir'可能不应该被分割。 (3)你想分裂的单词是什么:把所有的单词放入一个数组中,只提取第* n个单词,...? – Socowi
你在找'shift'吗?另外,请阅读[Bash FAQ/035](http://mywiki.wooledge.org/BashFAQ/035)和[ComplexOptionParsing](http://mywiki.wooledge.org/ComplexOptionParsing)。 –