4

簡単に解決できるはずの問題に遭遇しましたが、一生の間、それを理解することはできません。本当に遅いのかもしれません。わからない。

したがって、シェルスクリプトがあり、実行する必要のあるifステートメントがあります。問題は、このbashスクリプト内に、ifステートメント内にこのfindコマンドの一部を実際に構築するために使用している関数があることです。エラーを受け取らずに両方を実行する方法を知りたいです[: too many arguments

現在のコードは次のとおりです。

if [-n `find ./` build_ext_names``]; then

本当に投稿する必要があるのはそれだけです。そのfindコマンド内でそれを実行する方法を理解する必要がありbuild_ext_namesます。これはifstatement内にあります。

4

2 に答える 2

12

Michael Aaron Safyanは正しい考えを持っていますが、当面の問題を修正するには、コマンド置換$(command)に```command```の代わりに単純な構成を使用できます。これにより、はるかに簡単なネストが可能になります。

if [ -n "$(find ./ "$(build_ext_names)")" ]; then
于 2011-07-07T06:41:54.807 に答える
2

これを分割すると簡単になります。

function whateverItIsYouAreTryingToDo() {
   local ext_names=$(build_ext_names)
   local find_result=$(find ./ $ext_names)
   if [ -n "$find_result" ]  ; then
       # Contents of if...
   fi
}
于 2011-07-07T06:36:42.060 に答える