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 и пр) которые внутри скрипта в своем внутреннем синтаксисе используют такие же переменные?

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

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

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 02:11
5000 руб./за проект
01 мая 2024, в 00:29
2000 руб./за проект
01 мая 2024, в 00:20
15000 руб./за проект