GNU/Linux >> Linux の 問題 >  >> Linux

getopt と getopts (s 付き) のどちらがより標準的なパッケージですか?

which は間違ったツールです。 getopts 通常はビルトインでもあります:

<ブロック引用>

getopts以降 現在のシェル実行環境に影響を与えるため、通常はシェルの通常の組み込みとして提供されます。

~ for sh in dash ksh bash zsh; do "$sh" -c 'printf "%s in %s\n" "$(type getopts)" "$0"'; done
getopts is a shell builtin in dash
getopts is a shell builtin in ksh
getopts is a shell builtin in bash
getopts is a shell builtin in zsh

シェル スクリプトを使用している場合は、getopts に安全に依存できます。 .どちらかを優先する理由は他にもあるかもしれませんが、getopts 標準です .

参照:「which」を使用しないのはなぜですか?では何を使う?


私も getopts の方がいいと思います getopt以上 以下の理由により:

getopt 短所

<オール>
  • 外部ユーティリティ
  • 従来のバージョンでは、空の引数文字列または空白が埋め込まれた引数を処理できません
  • getopts 長所

    <オール>
  • あらゆる POSIX シェルで動作し、移植可能です
  • -a -b でうまく動作します -ab と同様

  • Linux
    1. Linuxの基本:Wgetを使用してシェルにファイルをダウンロードする方法

    2. Bashシェルのカスタマイズ

    3. どのシェルインタープリターがシバンなしでスクリプトを実行しますか?

    1. どのシェルで実行していますか?

    2. 2015年の技術予測による新年のガートナーリング

    3. Linux シェルを使用してスペースを含むファイルの名前を変更するにはどうすればよいですか?

    1. 現在のディレクトリを返す Linux/UNIX sh シェルのコマンドはどれですか?

    2. 名前がハイフンで始まるファイルの名前を変更できません

    3. du -h 小数点以下の桁数を増やす