Я пытаюсь реализовать простую программу оболочки, в которой отображаются французские телефонные номера, содержащиеся в файле.логический или | Unix
Вот моя основная оболочка
#!/bin/bash
#search of phone numbers
t=(\+ | 00)33[1-9][0-9]{8}
t2=(\+ | 00)33[1-9][0-9]-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}
t3=(\+ | 00)33[1-9][0-9].[0-9]{2}.[0-9]{2}.[0-9]{2}.[0-9]{2}
grep -e $1 ($t | $t2 | $t3)
Вот мой входной файл:
phone_number.txt
+33143730862
00335.45.45.45.45
+332-45-45-45-45
+334545454554454545
Я получаю эту ошибку:
./script_exo2.sh: line 5: syntax error near unexpected token `|'
./script_exo2.sh: line 5: `t=(\+ | 00)33[1-9][0-9]{8}'
./script_exo2.sh: line 6: syntax error near unexpected token `|'
./script_exo2.sh: line 6: `t2=(\+ | 00)33[1-9][0-9]-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}'
./script_exo2.sh: line 7: syntax error near unexpected token `|'
./script_exo2.sh: line 7: `t3=(\+ | 00)33[1-9][0-9].[0-9]{2}.[0-9]{2}.[0-9]{2}.[0-9]{2}'
./script_exo2.sh: line 9: syntax error near unexpected token `('
./script_exo2.sh: line 9: `grep -e $1 ($t | $t2 | $t3)'
Возможно, вы захотите поместить некоторые цитаты вокруг строк и переменных. http://www.shellcheck.net - ваш друг. – Biffen
'bash' на OS X работает так же, как' bash' на любом Linux, который вы можете найти. Представленный вами сценарий недействителен ни для одного из них, потому что он использует метасимволы и управляющие операторы, некорректные, где он хочет, чтобы они обрабатывались как данные (в частности, '(', ')', '|' и символ пробела). –
'00' не является универсальным международным префикс-кодом, хотя это во многих странах мира. Вот почему нам нужен универсальный '+'. – tripleee