Как повторить голый гипен (`-`) в zsh? - PullRequest
0 голосов
/ 01 марта 2020

Я ищу способ обойти zsh эхо, по-видимому, обрабатывает строку, которая является просто дефисом, как если бы это была пустая строка

echo -
# no output

echo "-"
# no output

echo '-'
# no output

В частности, я разбиваю строку на известного персонажа, а затем работать с двумя фигурами, и любая из двух фигур может быть -. Например,

% my_f() {
  my_arr=(${(s.b.)1})
  echo $my_arr[1]
  echo $my_arr[2]
}

% my_f "abc"
a
b

% my_f "-bc"
# I need to know -
b

% my_f "ab-"
a
# I need to know -

%

. В частности, над которой я работаю, я могу переделать вещи так, чтобы потенциал - не отражался сам по себе

my_arr=(${(qqqs.b.)1})
echo " ${(Q)my_arr[1]} "
echo " ${(Q)my_arr[2]} "

Но это похоже на удачу и потребует много qqq и Q вокруг этого сценария. Есть ли лучший способ?

Ответы [ 2 ]

1 голос
/ 01 марта 2020

Используйте printf вместо. (Как правило, это хороший совет относительно любого использования echo.)

my_f () {
  printf '%s\n' "${(s.b.)1}"
}
1 голос
/ 01 марта 2020

Попробуйте echo - "-". Первый da sh завершает обработку опций, поэтому печатается следующий текст.

См. Этот превосходный ответ для большего контекста: { ссылка }

...