В вашей команде awk
есть несколько ошибок.
Следующее будет импортировать $arg
как переменную awk
arg
:
awk -F, -v OFS=, -v arg="$arg" '{ $2 = arg; print }' >"$outfile"
$2
невозможно интерпретировать как второй позиционный параметр здесь или в вашем коде, поскольку он встречается в одинарных кавычках, а оболочка не раскрывает переменные в одинарных кавычках.
OFS
иarg
(оба являются переменными awk
)устанавливаются с помощью -v
в командной строке. Вы не используете -v
для установки OFS
и неправильно используете -v
перед фактическим кодом awk
. Это дало бы вам ошибку (, о которой вы не упоминаете ). На самом деле -OFS,
с GNU awk
означает «включить оптимизацию и установить разделитель полей ввода на строку S,
».
Обратите внимание: если$arg
(переменная оболочки )содержит обратную косую черту, которую необходимо сохранить, лучше вместо этого передать значение через среду, поскольку в противном случае они будут интерпретированыawk
:
arg="$arg" awk -F, -v OFS=, '{ $2 = ENVIRON["arg"]; print }' >"$outfile"
Предполагается, что выходной файл должен быть $outfile
, а не outfile
.
Связанные:
В вашей встроенной системе вы включили udev
Я полагаю? И ваша клавиатура / мышь все подключены до начала загрузки? Если это так, то команда udevadm settle
выполнит то, о чем вы просите.