4

こんにちは、私はこれに問題を抱えています

echo 'Welcome to my first Script'
mkdir myScript
cd myScript
touch doc1 sales.doc.test2.txt outline.doc

echo 'You now have ' ;find . -type f|wc -l;echo 'files in your "myScript" folder'

address="205"
echo -n "Please enter your favourite number:"
read myvar
echo "The number you entered is $myvar"

「myScript フォルダーに (3) 個のファイルがあります」という出力を 1 行で出力しようとしていますが、3 行に分けて出力し続けます。ここで 3 つまたは 4 つの異なるコードを試しました (上記の同様の質問をクリックして) が、おかしなエラーが表示されます。それをググる必要がありました)。

4

4 に答える 4

7

echo "You now have $(find . -type f|wc -l ) files in your \"myScript\" folder"

さらに、findを include-maxdepth 1に変更することをお勧めします。そうしないと、再帰します...

于 2013-02-15T20:26:06.657 に答える
3

改行echoを出力するため、それらは別々の行にあります。wc

それを回避する1つの方法は次のとおりです。

echo 'You now have' $(find . -type f | wc -l) 'files in your "myScript" folder'

echoここでは、1 つの改行を使用echoしてすべてを支配しているため、余分な改行を取り除きます。wcこの種の置換では、 の出力がwc単語に分割され、それらの単語がecho個別の引数としてに渡されるため、改行を取り除きます。単語の区切り文字が失われます (echo は出力で引数を区切るためにスペースを使用します)。

于 2013-02-15T20:24:08.330 に答える
2

改行なしスイッチ-nを使用して、次の結果をエコーし​​ますfind

echo -n 'You now have ' ; echo -n "`find . -type f|wc -l`"; echo -n ' files in your "myScript" folder'
于 2013-02-15T20:22:41.983 に答える
0

printf次のコマンドを使用します。

printf 'You now have %d files in your "myScript" folder' $( find . -type f | wc -l )

(文字列に埋め込まれたコマンド置換を使用した他の回答のわずかなバリエーション。)

于 2013-02-15T20:53:26.047 に答える