3

私はbashを初めて使用し、解決できない問題に遭遇しました。問題は、変数として定義された名前でfind-nameを使用する必要があることです。スクリプトの一部:

read MYNAME
find -name $MYNAME

しかし、スクリプトを実行すると、読み取り用に「* sh」と入力すると、結果は0になります。ただし、ターミナルに直接入力すると、次のようになります。

find -name '*sh'

正常に動作しています。

私も試しました

read MYNAME
find -name \'$MYNAME\' 

読み取りには*shと入力すると、成功しません。

誰かが私を助けることができますか?

4

2 に答える 2

4

おそらく

read MYNAME
find -name "$MYNAME"

あなたが探しているバージョンです。二重引用符がないと、実行前に"シェルが例で展開*されます。そのため、最初の試行は機能しませんでした。*shfind

于 2013-03-20T01:39:12.690 に答える
3

あなたはおそらくしたい

find -name "$MYNAME"

これにより$MYNAME、bashのパス名拡張(別名「グロブ」)の対象となることが防止され、結果として。*shにそのまま渡されfindます。主な違いの1つは、グロブは、などの隠しファイルとは一致しない.sshのに対し、一致find -name "*sh"することです。ただし、求めている期待される動作を定義していないため、確実に何が必要かを判断するのは困難です。

于 2013-03-20T01:40:49.240 に答える