awk не распознается в сценарии оболочки

Счетчик ссылок для каталога — это количество имен, которые имеет этот каталог (Это работает так же, как и для обычных файлов ).

У вашего каталога cmdдва имени:

  1. cmdв своем родительском каталоге.
  2. .в самом каталоге.

Каталог /var/www/htmlимеет девять имен:

  1. htmlв своем родительском каталоге.
  2. .сама по себе.
  3. ..в каждом из его (семи )подкаталогов.

При нормальных обстоятельствах количество ссылок для записи .каталога должно быть равно 2 плюс количество подкаталогов, которые он содержит.


Это также верно для корневого каталога /, даже если он не имеет родительского каталога и, следовательно, должен иметь количество ссылок, равное 1 плюс количество подкаталоги.

У есть каталог .., который возвращает вас к /. Так что это решает эту загадку; именно /..предоставляет «дополнительную» ссылку на /. Это единственный каталог, чей каталог ..является обратной ссылкой на ..

1
18.09.2019, 00:53
2 ответа
#!/bin/bash
if [ $1 = a ]
then
     echo "$@" | awk '{print $2 + $3}'
fi

$2 и $3 не связаны с $1 сценария, но находятся в awk.

3
27.01.2020, 23:14

Учтите это, если вы всегда доверяете передаваемым ему аргументам:

$ cat script
awk 'BEGIN{ print '"$*"' }'

$./script 30 + 40
70

$./script 30 \* 40
1200

$./script 30 / 40
0.75

Обратите внимание на необходимость экранирования *, так как это подстановочный символ, в противном случае укажите аргументы в кавычках, например.:

$./script '30 * 40'
1200

Кроме того, при таком подходе вы не ограничены простыми арифметическими выражениями:

$./script 'log(10)'
2.30259

$./script 'exp(10)'
22026.5

$./script '10^2 - sqrt(9)'
97
3
27.01.2020, 23:14

Теги

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