$ 77

2016-12-27 6 views
2
echo -n "*.xcodeproj directory: "; 
read fileDirectory; 
echo -n $fileDirectory; 
fileExtension="pbxproj"; 
find $fileDirectory -name "*.${fileExtension}"; 

それは「見つけない:XXXX」を示し(fileDirectoryを)そのようなファイルやディレクトリ

をしかし、私は

fileDirectory=$1 

read fileDirectoryを交換する場合、それ働く

違いは何ですか?

答えて

2

$例えば1 bashスクリプトまたはスクリプト

内部関数に渡される最初の引数です:

mybashfunction /dirtofind 

関数の内部で、あなたが書いた場合:

echo "$1" 

それはすべきですプリント:

/dirtofind 

編集1:

あなたはここに魔法のように

~$ cat a.sh 
#!/bin/bash 

echo -n "*.xcodeproj directory: "; 
read fileDirectory; 
echo -n $fileDirectory; 
fileExtension="pbxproj"; 
find "$fileDirectory" -name "*.${fileExtension}"; 

~$ chmod +x a.sh 
~$ ./a.sh 
*.xcodeproj directory: /home 
/home/home/leonardo/Qt/Tools/QtCreator/share/qtcreator/qbs/share/qbs/examples/cocoa-touch-application/CocoaTouchApplication.xcodeproj/project.pbxproj 
/home/leonardo/Qt/Tools/QtCreator/share/qtcreator/qbs/share/qbs/examples/cocoa-application/CocoaApplication.xcodeproj/project.pbxproj 
:~$ 

作品を提出あなたの初めにシェバングを配置する必要があります。シェバング

#!/bin/bash 

編集を置き、2

はい、あなたはevalを使用することができます。あなたのスクリプトは次のようになります:

#!/bin/bash 
echo -n "*.xcodeproj directory: "; 
read fileDirectory; 
echo -n $fileDirectory; 
fileExtension="pbxproj"; 
eval fileDirectory=$fileDirectory 
find "$fileDirectory" -name "*.${fileExtension}"; 
+0

ありがとうございますが、なぜ 'find'で' read'によって取り込まれたfileDirectoryを使用できないのですか? – Tepmnthar

+0

これを試してみてください "$ fileDirectory" –

+0

"〜"は 'read'で取得したパラメータで/ Users/XXXと解釈できません。ですから、それを修正する方法はありますか、手動で "〜"を置き換える必要がありますか? – Tepmnthar

1

readは、位置パラメータ(引数)からではなく、STDIN(デフォルト)からデータを読み取ります。

最初の引数($1)としてデータをスクリプトに渡すと、readはそれをキャッチしません。対話的に提供している入力を捕捉します。

単語の分割とパス名の拡張を避けるために、変数の拡張を引用する必要があります。これらはほとんどの場合望ましくない。

+0

ノートに感謝しますが、印刷後に両方が正しいと思われる場合は、それらを「find」で使用する点でどのような違いがありますか? – Tepmnthar

関連する問題