Вывод читает « 13test.sh: строка 5: [: отсутствует `]' », но добавление квадратных скобок затем направляет ошибку во вложенный оператор if

Avísame si esto es lo que estás buscando

$ awk '{if ($1 in a) next; a[$1]=$0; print}' <filePath> | grep -v  -e STUDENT  -e Other | column -ts $'\t' 
Name (Roll no) #    Location   Section     Rank (MARKS)     Gender   
Anna (+)            USA        A1          First (100)      Female
(04)                California V
Bob (-)             USA        A2          First (99)       Male
(07)                Florida    VI
Eva (+)             USA        A4          Second (96)      Female
(12)                Ohio       V           English (99)
                                           Maths(100)
0
22.05.2019, 09:28
1 ответ

tl;dr Используйте for id in $strвместо for i in [ $str ];и if who -u | grep -q "$id"вместо if [ who -u | grep -q $i ];.

  • Материал внутри [ … ]представляет собойусловное выражение , которое отличается от команды.
  • [ … ]ничего не печатает , поэтому циклу forне с чем работать, если вы обернете в него $str.
  • if COMMAND— это канонический способ запуска чего-либо в случае успешного выполнения команды.
  • Однобуквенные переменные являются плохой идеей™ из соображений удобства сопровождения.
2
28.01.2020, 02:30

Теги

Похожие вопросы