Проблема заключается в два раза. Во-первых, bash не будет расширять переменные в одинарных кавычках, поэтому $parts
передается буквально до awk
. Вместо этого вы должны использовать двойные кавычки. Это, однако, порождает другую проблему. Bash расширяет переменные перед тем вызова awk
:
LINES=$(wc -l $filename | awk "{print $1/$parts}" OFMT="%0.0f")
-- ------
| |-> $parts as defined in
| your script
|------> $1, the first positional
parameter of your bash script.
Итак, для того, чтобы использовать фактическое первое поле файла, вам нужно, чтобы избежать $1
:
LINES=$(wc -l $filename | awk '{print \$1/$parts}' OFMT="%0.0f")
Или передать переменную в awk явно:
LINES=$(wc -l $filename | awk '{print $1/parts}' OFMT="%0.0f" parts=$parts)
Спасибо. я узнал больше. –