1

シェルスクリプトから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のいずれかまたは両方を空白にすることができます。空白の場合は、文字列で生成しません。

しかし、私はifステートメントを持っているのは面倒すぎると感じています。

これを優雅に解決する方法はありますか

4

1 に答える 1

1

これはうまくいくはずです

#!/bin/sh

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

[ $2 ] || usage
eval "path/to/binary" "$@"
于 2013-01-31T00:35:51.653 に答える