Экспорт служит какой-либо цели в этом коде?

Версия 1969 года утеряна для истории. Но что бы вы хотели? Версия первого дня? День 200?

Самое близкое к релизам оригинальное Unix было издание руководства. Руководство Unix 1st Edition было опубликовано в 1971 году, и это самый ранний доступный код. Вы можете просмотреть исходный код на веб-сайте The Unix Heritage Society . Исходный код 1-го издания находится в каталоге Dennis _v1.

Существует также образ Docker, который можно использовать для запуска Unix 1st Edition.

https://hub.docker.com/r/bahamat/unix-1st-ed/

5
29.01.2020, 18:06
2 ответа

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
11
28.04.2021, 23:25

Вы правы, здесь нет необходимости использовать 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.

2
28.04.2021, 23:25

Теги

Похожие вопросы