С Bash
и SED
Я пытаюсь заменить две строки в файле js с URL-адресами.
Два URL-адреса, которые должны быть вставлены, являются входными параметрами при запуске .sh script.
./deploy.sh https://hostname.com/a/index.html https://hostname2.com/test
Однако, чтобы сделать это полезным в моей команде sed, мне нужно избежать всех косых черт с помощью: \\
?
./deploy.sh https:\\/\\/hostname.com\\/a\\/index.html https:\\/\\/hostname2.com\\/test
Если они экранированы, эта команда SED работает на Mac OSX Sierra
APP_URL=$1
API_URL=$2
sed "s/tempAppUrl/$APP_URL/g;s/tempApiUrl/$API_URL/g" index.src.js > index.js
Теперь я не хочу вставлять экранированные URL-адреса в качестве параметров, я хочу, чтобы script он сам удалял косые черты.
Вот что я пробовал:
APP_URL=$1
API_URL=$2
ESC_APP_URL=(${APP_URL//\//'\\/'})
ESC_API_URL=(${API_URL//\//'\\/'})
echo 'Escaped URLS'
echo $ESC_APP_URL
#Echos result: https:\\/\\/hostname.com\\/a\\/index.html
echo $ESC_API_URL
#Echos result: https:\\/\\/hostname2.com\\/test
echo "Inserting app-URL and api-URL before dist"
sed "s/tempAppUrl/$ESC_APP_URL/g;s/tempApiUrl/$ESC_API_URL/g" index.src.js > index.js
Параметры выглядят одинаково, но в этом случае SED выдает ошибку
sed: 1: "s/tempAppUrl/https:\\/\ ...": bad flag in substitute command: '\'
Может ли кто-нибудь сказать мне разницу здесь? Строки выглядят одинаково, но дают разные результаты.