Для моего присвоения я должен отобразить текущее количество строк в файле оболочки, ниже я реализовал wc -l
управляйте в моей программе, но вместо того, чтобы отобразить количество строк мое эхо оболочки фактическая команда и имя файла. Как я преодолел бы это?
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))"
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
Теперь, если Вы перенаправляете файл в stdin wc
команда, это не произведет имя файла (так как stdin
технически не имеет никакого имени файла).
echo "This file has: " $( wc -l < mendietaRPgm4.sh ) "lines of code"
Это теперь является надлежащим. Для одобрения я рекомендовал бы читать руководство удара для обнаружения, какие переменные можно использовать для обращения к самому сценарию. Поскольку в настоящее время, Ваш сценарий нацеливает к твердому коду название сценария в себе, и это не гибко, ни практично. После того как сценарий переименован, команда произведет ошибки. Но это - дополнительное осуществление для читателей.