如何显示正在运行的shell文件中的行数

如何显示正在运行的shell文件中的行数

为了完成我的任务,我需要显示 shell 文件中的当前行数,下面我wc -l在程序中实现了命令,但我的 shell 并没有显示行数,而是回显了实际的命令和文件名。我该如何克服这个问题?

echo "Hello my name is: Roosevelt Mendieta"
echo "My user name is: $USER"
echo "Todays date and time is: `date`"
echo "This file has: " wc -l mendietaRPgm4.sh  "lines of code"
read -p "Please enter any number " number
TIME=2
echo "Your number $number * 2 = $(($number * $TIME))"

答案1

echo "This file has: " wc -l mendietaRPgm4.sh  "lines of code"

这是echo带有 5 个字符串作为参数的命令(由于使用了双引号,因此参数为 5)。您需要使用$(...)命令替换 - 里面的任何命令都将运行,并且其输出将替换$(...)

echo "This file has: " $( wc -l mendietaRPgm4.sh ) "lines of code"

这更接近,但并不理想,因为wc -l file.txt会输出文件名。例如

$ wc -l /etc/passwd
47 /etc/passwd

现在,如果将文件重定向到wc命令的标准输入,它将不会输出文件名(因为stdin从技术上讲没有文件名)。

echo "This file has: " $( wc -l < mendietaRPgm4.sh ) "lines of code"

现在这很合适。为了加分,我建议阅读bash 手册找出可以使用哪些变量来引用脚本本身。因为目前,您的脚本旨在将脚本名称硬编码在其本身中,这既不灵活也不实用。一旦重命名脚本,命令就会产生错误。但这对读者来说是一项额外的练习。

相关内容