Я полагаю, что это будет делать то, что вы пытались сделать в своем примере:
#!/bin/sh
let "column=${1:-1} + 1"
awk "{print \$$column}"
Однако я не понимаю, почему вы добавляете его в индекс столбца?Тогда вы не сможете интуитивно получить доступ к первому столбцу.
Вместо этого я бы сказал:
#!/bin/sh
let "column=${1:-1}"
awk "{print \$$column}"
Аргументом ./Column.sh
будет номер столбца, который выхочу, 0
выдаст вам все столбцы, в то время как при вызове без аргументов индекс столбца по умолчанию будет 1
.
Я знаю bash.Я хотел бы сделать арифметику с AWK
В таком случае, как насчет:
#!/bin/sh
column=${1:-1}
awk 'BEGIN{colawk='$column'+1} {print $colawk}'
Или просто:
#!/bin/sh
awk 'BEGIN{colawk='${1:-1}'+1} {print $colawk}'
Две вещи, которые я изменил вВаш сценарий:
- поместите арифметику в блок
BEGIN{}
, поскольку это нужно сделать только один раз, а не повторять для каждой строки ввода. - "
print $colawk
" вместо«print colawk
», поэтому мы печатаем столбец с индексом colawk
вместо его значения.