嗨,我一直遇到麻烦
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个不同的代码(通过点击上面的类似问题)但是它们给了我有趣的错误,这只是我的第一个脚本,所以我理解我正在使用的所有命令(减去文件的计算,我不得不谷歌那个)。
答案 0 :(得分:7)
echo "You now have $(find . -type f|wc -l ) files in your \"myScript\" folder"
此外,我建议您更改find
以包含-maxdepth 1
,否则您将会递归......
答案 1 :(得分:3)
它们位于不同的行,因为echo
和wc
输出换行符。
解决这个问题的方法是:
echo 'You now have' $(find . -type f | wc -l) 'files in your "myScript" folder'
我们在这里删除了额外的echo
换行符,因为我们使用一个echo
来统治它们。我们摆脱了wc
换行符,因为通过这种替换,wc
的输出被分解为单词,并且这些单词作为单独的参数传递给echo
;单词分隔符丢失(echo使用空格在输出中分隔其参数)。
答案 2 :(得分: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'
答案 3 :(得分:0)
使用printf
命令:
printf 'You now have %d files in your "myScript" folder' $( find . -type f | wc -l )
(使用嵌入在字符串中的命令替换的其他答案略有不同。)