如何获取命令行参数?

时间:2013-11-01 09:41:49

标签: linux

假设我将命令行参数传递给我的shell脚本,如下所示:

ex 1)./myshell_script a b c d e f

ex 2)./myshellscript f d e b c a

我的问题是,如果我想获取始终在参数“b”之后的参数“c”[因为命令行参数可以按任何顺序提供],我怎么能得到总是在之后的值参数“b”?

3 个答案:

答案 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的任何排列。

不必担心订单,这非常值得在脚本开头的几行额外行和其调用中的额外字符。

Getopts Tutorial on Bask-hackers

答案 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