Версия 1969 года утеряна для истории. Но что бы вы хотели? Версия первого дня? День 200?
Самое близкое к релизам оригинальное Unix было издание руководства. Руководство Unix 1st Edition было опубликовано в 1971 году, и это самый ранний доступный код. Вы можете просмотреть исходный код на веб-сайте The Unix Heritage Society . Исходный код 1-го издания находится в каталоге Dennis _v1.
Существует также образ Docker, который можно использовать для запуска Unix 1st Edition.
I understand that it calculates the sum of the number of lines of all *.java files in the directory src.
Это не обязательно полностью верно. Он вычисляет сумму количества строк всех файлов *.java
в дереве каталогов с корнем src
(, т.е. src
, и всех его дочерних каталогов ). Но это не удастся для любых путей к файлам, содержащих пробелы, или если есть имена каталогов, заканчивающиеся на .java
.
Since SUM is never accessed by a child process, is there any reason for exporting it?
№
Я бы, наверное, написал такой фрагмент кода, сделав его имя файла -безопасным в процессе:
find src -type f -name '*.java' -exec wc -l {} \; | awk '{ s += $1 } END { print s }'
Вероятно, лучшим решением было бы:
find src -type f -name '*.java' -exec cat {} + | wc -l
Вы правы, здесь нет необходимости использовать export
. Однако с этим кодом больше проблем:
$ ~/.cabal/bin/shellcheck e.sh
In e.sh line 4:
for f in $(find src -name "*.java"); do
^------------------------^ SC2044: For loops over find output are fragile. Use find -exec or a while read loop.
In e.sh line 5:
export SUM=$(($SUM + $(wc -l $f | awk '{ print $1 }')))
^--^ SC2004: $/${} is unnecessary on arithmetic variables.
^-- SC2086: Double quote to prevent globbing and word splitting.
Did you mean:
export SUM=$(($SUM + $(wc -l "$f" | awk '{ print $1 }')))
For more information:
https://www.shellcheck.net/wiki/SC2044 -- For loops over find output are fr...
https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing...
https://www.shellcheck.net/wiki/SC2004 -- $/${} is unnecessary on arithmeti...
Также рекомендуется использовать имена переменных в нижнем регистре в скрипты см. это для объяснения.
Как правило, использование tldp.org не рекомендуется, см. это или это . я также видел людей, не рекомендующих tldp.org здесь, на StackExchange.