Leksnsk
@Leksnsk

Как bash понимает какой переменной оперировать?

Добрый день.
В процессе написания скрипта столкнулся с таким моментом:
Есть файл с текстом:
1212 | 4956666666 | 0000

парсим этот файл простым скриптом, что бы получить только значение до первого "|":
#!/bin/bash
cat text | grep $1 | awk -F "|" {'print $1'}

leks@leks-PC:~/sripts$ bash -x ./test 6666
+ cat text
+ grep 6666
+ awk -F '|' '{print $1}'
1212

и даже получаем нужное значение.

Но как bash понял что в строке cat text | grep $1 | awk -F "|" {'print $1'} :
grep $1 (тут берем первый входной параметр),
а тут awk -F "|" {'print $1'} берем первый результат разделения строки с помощью awk?

Почему не интерпретировал строку как cat text | grep 6666 | awk -F "|" {'print 6666'}?

Если без конкретного примера, то вопрос могу сформулировать так:

Как избегаются конфликты переменных при выполнение скрипта ./test $1 $2 $3 $4 и программ (awk, sed и пр) которые внутри скрипта в своем внутреннем синтаксисе используют такие же переменные?

Уффф надеюсь подробно и понятно написал)
  • Вопрос задан
  • 329 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Потому что второй внутри одинарных кавычек. Строка внутри одинарных не интерполируется
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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