清除可选参数并将其传递给shell脚本

时间:2013-01-31 00:13:24

标签: shell unix

我正在尝试从shell脚本执行cpp二进制文件.cpp接受参数,其中一些是可选的。

所以基本上我要做的是生成适当的字符串,然后执行类似的字符串:

generate_string()
{
    string="$path/to/binary"
    param1=$1
    param2=$2
    generated_string="$string $param1 --param2=$param2"
    echo $generated_string
}

#  execution function
execute()
{
    read -p 'param1: ' param2
    read -p 'param2: ' param2
    echo 'optional arguments'
    *read -p "param3: " param3   
    read  -p "param4: " param4*
    string=$(generate_string $param1 $param2 ???????)
    eval $string
}

现在在这个函数中..param3和param4中的任何一个或两个都可以为空 我想要的是如果它是空白然后在场外我不会在字符串中生成它。

但我觉得它太乱了,不能发表声明......

有没有办法优雅地解决这个问题

1 个答案:

答案 0 :(得分:1)

这应该工作先生

#!/bin/sh

usage ()
{
  echo usage: $0 PARAM1 PARAM2 [PARAM3] [PARAM4]
  exit
}

[ $2 ] || usage
eval "path/to/binary" "$@"