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

オプションのパラメータを設定する方法は??

閉鎖 。この質問は意見に基づいています。現在、回答を受け付けていません。

この質問を改善したいですか? この投稿を編集して、事実と引用で回答できるように質問を更新してください。

7年前に閉鎖されました。


この質問を改善する

次の問題があるとします。

スクリプトがパイプ内で実行されるかどうかに応じて、-print0を追加する必要があります findへのパラメータ 。

これを行うには、少なくとも2つの方法が考えられます。

[[ -p '/dev/stdin' ]] && local null_terminated='-print0'
find -mindepth 1 -maxdepth 1 ! ( "${args[@]}" ) "$null_terminated"

または

    if [[ -p '/dev/stdin' ]]; then
        find -mindepth 1 -maxdepth 1 ! ( "${args[@]}" ) -print0
    else
        find -mindepth 1 -maxdepth 1 ! ( "${args[@]}" )
    fi

これを行うためのより良い方法はありますか?質問はbashです 、ただし、他のシェルまたはポータブル/標準のshのソリューション ソリューションも歓迎されます。

承認された回答:

最初のものは、$null_terminatedのようには機能しません 空または未設定の場合、find その空の余分な引数について文句を言うでしょう。

find -mindepth 1 -maxdepth 1 ! ( "${args[@]}" ) $null_terminated

動作しますが、$null_terminatedの場合のみ ワイルドカード文字またはIFSの文字は含まれていません。

やる:

if [[ -p '/dev/stdin' ]]; then
  extra_args=(-print0)
else
  extra_args=()
fi

find -mindepth 1 -maxdepth 1 ! ( "${args[@]}" ) "${extra_args[@]}"

問題はありません。

Bourne / POSIXly、次のことができます:

set--find。 ! -名前 。 -プルーン ! ("[メール保護]")[-p / dev / stdin] &&set-"[メール保護]"-execprintf'%s
Linux
  1. LinuxでFINDを使用する方法

  2. Linuxでファイルを見つける方法

  3. Bittornadoトラッカーを設定する方法は?

  1. Nginxリバースプロキシを設定する方法

  2. Linux / UNIX :SUID/SGID が設定されたファイルを見つける方法

  3. CMake で別の Boost インストールを見つけるにはどうすればよいですか?

  1. 新しい irssi 接続にデフォルトのニックネームを設定するにはどうすればよいですか?

  2. wlan0のステータスを見つける方法は?

  3. エラーが発生したときに Bash で行番号を見つけるにはどうすればよいですか?