Команда
grep -nr `echo "FLAG" | base64`
указывает на рекурсивный поиск во всех файлах в текущем каталоге шаблона, возвращаемого командой echo "FLAG" | base64
.
Вместо этого, я думаю, вы хотите
echo "FLAG" | base64 | grep -n 'Rkx'
или, если по какой-либо причине вам нужна подстановка команды:
grep -n 'Rkx' <<< $(echo "FLAG" | base64)
Обратите внимание, что выражение $()
используется вместо обратных кавычек для подстановки команд. Вот почему.
Проблема заключается в строке#!
-вашего скрипта. Он должен читаться как #!/bin/sh
, так как это сценарий оболочки, а не awk
.
На самом деле здесь происходит то, что оболочка с вашей ошибочной строкой#!
-выполнит
/bin/awk./Colavg.sh
Это означает использование текстовой строки ./Colavg.sh
в качестве программы awk
. Для программы awk
это не имеет смысла, и ваш интерпретатор awk
идентифицирует две отдельные ошибки, прежде чем принять решение об отказе.
Скрипт можно упростить:
#!/bin/sh
name=County029-CO-0023-T0000JD
awk -F, '
$4 == -999 { c999++ }
NF == 4 { count++ }
END { printf "missing: %d\n", c999 }
END { printf "missing: %d\n", count }' "$name.out" >>"$name-avg.out"
Измените >>
в конце на >
, если вы хотите, чтобы выходной файл был усечен (и очищен )перед записью в него результатов.