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) 个文件”作为一行,但它一直在 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

它们位于不同的行上,因为echowc输出换行符。

一种解决方法是:

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

在这里,我们去掉了额外的echo换行符,因为我们使用一个echo来统治它们。我们摆脱了wc换行符,因为通过这种替换,输出wc被分解为单词,并且这些单词echo作为单独的参数传递给;单词分隔符丢失(echo 在输出时使用空格分隔其参数)。

于 2013-02-15T20:24:08.330 回答
2

使用 no-new-line 开关-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 回答