Большая разница заключается в том, что substr()
- устаревший метод, который все еще можно использовать, но его следует использовать с осторожностью, поскольку в будущем они будут удалены полностью. Вы должны работать, чтобы удалить их использование из своего кода. И метод substring()
преуспел и указал предыдущий.
Прямого перевода нет: 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]:
Все, что можно сделать на других языках оболочки, должно быть возможно в рыбе, хотя при этом рыба может полагаться на внешние команды.
BLOCKQUOTE>