Я думаю, что у вас может быть проблема с версией оболочки (ваша оболочка не такая современная, как используемая вами запись).Предыдущее воплощение этого поста предлагало:
apps="${app}/rtcom-call-ui/general_call"
Или, для замены rtcom-call-ui
на general_call
, вам нужно использовать echo
и sed
(по крайней мере, в классических оболочках - это может бытьчто bash
имеет что-то встроенное для этого):
apps=$(echo "${app}" | sed s/rtcom-call-ui/general_call/)
Обозначение ${var|continuation}
(где |
представляет произвольный знак пунктуации) используется для изменения подставляемого значения.Например:
apps="${app:-/something/suitable/as/the/default}"
будет копировать значение $app
, если $app
вообще не задано (здесь не имеет значения; полезно для переменных среды) или если $app
- пустая строка.
Ошибка, которую вы получаете, заключается в том, что в вашей версии оболочки нет действительной замены, начинающейся с '/
' .Эта запись, кажется, действительна в некоторых версиях Bash (включая ту, с которой мне приходится играть);Я не знаю, когда это было добавлено.Но если используемая оболочка жалуется на нотацию, то, очевидно, она не подходит для используемой версии оболочки.
В зависимости от строки shebang (#!/bin/sh
против #!/bin/bash
),это может работать по-другому.В противном случае версия Bash на вашем компьютере может быть слишком старой.
Вы можете проверить свои оболочки с:
for app in /some/location/rtcom-call-ui/where.png /another/location/nowhere/thing.png
do
apps=${app/rtcom-call-ui/general-call}
echo $app
echo $apps
done