Проблема в том, что -e
, -n
являются действительными echo
параметрами и echo
не печатает их.
Кроме того, вы должны использовать --
в grep
, чтобы отделить параметры и шаблон. Рекомендуется использовать опцию -F
в grep, а также для поиска по фиксированным строкам.
Вы можете использовать:
for a in {a..z}; do grep -F -- "-$a" <<< "-$a"; done
-a
-b
-c
-d
-e
-f
-g
-h
-i
-j
-k
-l
-m
-n
-o
-p
-q
-r
-s
-t
-u
-v
-w
-x
-y
-z
Обратите внимание, что вы также можете использовать printf
вместо echo
:
for a in {a..z}; do printf -- '-%s\n' "$a" | grep -F -- "-$a"; done