Как заставить cmd работать внутри l oop? - PullRequest
0 голосов
/ 07 августа 2020

Я что-то делаю не так?

Этот l oop, похоже, не работает.

#!/usr/bin/ksh

num=3
for i in $(seq 1 "$num") 
do
awk 'NR==$i' "$file1" > "$file2"
# Doing some operation
done

Я хочу, чтобы было выполнено 3 awk:

awk 'NR==1' "$file1" > "$file2"
# do some operation
awk 'NR==2' "$file1" > "$file2"
# do some operation
awk 'NR==3' "$file1" > "$file2"
# do some operation

1 Ответ

2 голосов
/ 07 августа 2020

В оболочке Bourne и ее производных (k sh, zsh, et c.) Переменные не раскрываются внутри одинарных кавычек.

Изменение:

awk 'NR==$i'

to:

awk "NR==$i"

Если ваша программа awk длиннее этой единственной строки, сохраните одинарные кавычки и определите переменную awk с помощью -v:

awk -v "i=$i" 'NR == i'
...