4

私はテキストファイルを一時停止するこのbashスクリプトを持っていますが、効率を上げるために少し単純で短くしたいと思います。これを行う方法について誰かが何かアイデアはありますか?

$vi

function displayHelp
{
        echo "Use '-f' to set the file to be used "
        echo "Use '-s' to sort the data bya column"
        echo "Use '-m' to output the rows which match this expression"
}

function displayColumn
{
    columnnumber="$2"
    awk '{print $'$columnnumber'}' $1

}

function displayParameter
{   
    parameter="$3"
    columnnumber="$2"
    awk -v s=$3 -v c=$2 '$c ~ s { print $0 }' $1
}

while getopts f:s:m:h opt
do
  case "$opt" in
    h) displayHelp;;
    f) filepath="$OPTARG";;
    s) column="$OPTARG"  
    displayColumn $filepath $column
    ;;
    m) searchParam="$OPTARG"
    displayParameter $filepath $column $searchParam
    ;;

  esac
done
4

1 に答える 1

2

では、変数の受け渡しをdisplayColumn()使用していませんが、使用しています。シェル変数を埋め込む代わりに、常に使用する必要があります。-vdisplayParameter()-v

また、displayParameter()2 つの変数を割り当て、それらを使用しないでください。

シェル変数を展開するときは、常にシェル変数を引用する必要があります。それらが単独で表示される場合、割り当ての右側でそれらを引用する必要はありません。

-fそれが意図したものである場合、強制は必要ありません。それ(および必要な引数)を指定しないと、スクリプトはstdin(意図したものである可能性があります)から読み取ろうとします。

必要な強制は-mありませ-sん。両方が存在しない場合、AWK コマンドはエラー メッセージを出力します。

一般に、必須の引数は位置パラメータとして処理し、オプション フラグはオプション (およびその引数) に使用する必要があります。

あなたの質問は、おそらくCode Reviewに適しています。

于 2012-05-01T21:24:02.233 に答える