Итерация по буквам в рыбной раковине

Большая разница заключается в том, что substr() - устаревший метод, который все еще можно использовать, но его следует использовать с осторожностью, поскольку в будущем они будут удалены полностью. Вы должны работать, чтобы удалить их использование из своего кода. И метод substring() преуспел и указал предыдущий.

0
задан Tim Rain 18 March 2019 в 18:59
поделиться

1 ответ

Прямого перевода нет: fish использует элементы, разделенные запятыми, внутри фигурных скобок - https://fishshell.com/docs/current/index.html#expand-brace

Вы также не можете сделать for i in /dev/sd[b-g], потому что рыба не использует наборы символов в качестве подстановочных знаков при глобализации - https://fishshell.com/docs/current/index.html#expand-wildcard

Вы заканчиваете тем, что вызываете какую-то внешнюю программу для генерации этого списка файлов, и вы знаете, что bash работает, поэтому:

for i in (bash -c 'printf "%s\n" /dev/sd{b..g}'); ...

Это пример одного из принципов дизайна fish [ 114]:

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

0
ответ дан glenn jackman 18 March 2019 в 18:59
поделиться