假设我将命令行参数传递给我的shell脚本,如下所示:
ex 1)./myshell_script a b c d e f
ex 2)./myshellscript f d e b c a
我的问题是,如果我想获取始终在参数“b”之后的参数“c”[因为命令行参数可以按任何顺序提供],我怎么能得到总是在之后的值参数“b”?
答案 0 :(得分:1)
$ ./a.sh f d e b c a
c
码
#!/bin/bash
i=
for p in $@; do
if [ "$i" == "1" ];then
echo $p
exit
fi
if [ "$p" == "b" ];then
i=1
fi
done
答案 1 :(得分:0)
getopts
最好不要依赖参数订单,而是使用getopts
将它们分配给明确的值。这允许您将事物写为./myshell_script -a a -b b -c c -d d -d e -f f
,这相当于./myshellscript -f f -d d -e e -b b -c c -a a
的任何排列。
不必担心订单,这非常值得在脚本开头的几行额外行和其调用中的额外字符。
答案 2 :(得分:0)
<强> myshellscript 强>
#!/bin/bash
grep -oP 'b\s*\K[^ ]+' <<<$*
测试:
% myshellscript a b c d e f
c
% myshellscript f d e b c a
c