У меня есть текст в одном файле, который я хочу скопировать в другой файл, используя скрипт оболочки.
Это скрипт -
#!/bin/sh
PROPERTY_FILE=/path/keyValuePairs.properties
function getValue {
FIELD_KEY=$1
FIELD_VALUE=`cat $PROPERTY_FILE | grep "$FIELD_KEY" | cut --complement -d'=' -f1`
}
SERVER_FILE=/path/FileToReplace.yaml
getValue "xyz.abc"
sed -i -e "s|PASSWORD|$FIELD_VALUE|g" $SERVER_FILE
keyValuePairs.properties:
xyz.abc=abs
FileToReplace.yaml:
someField:
address: "someValue"
password: PASSWORD
Цель сценария - извлечь «abs» из keyValuePairs.properties и заменить его в FileToReplace.yaml из поля PASSWORD. FileToReplace.yaml должен выглядеть следующим образом:
someField:
address: "someValue"
password: abs
Примечание. Вместо «abs» в тексте может быть знак «=». Это тоже должно работать нормально.
Текущая ситуация такова, что при запуске сценария он обновляет FileToReplace.yaml как
someField:
address: "someValue"
password:
Он устанавливает значение как пустое.
Может кто-нибудь помочь мне понять, что не так с этим сценарием?
Примечание. При каждом выполнении сценария возникает проблема -
sh scriptToRun.sh
cut: illegal option -- -
usage: cut -b list [-n] [file ...]
cut -c list [file ...]
cut -f list [-s] [-d delim] [file ...]
Если я использую gcut, код просто отлично работает, но я не могу использовать gcut (проблемы с требованиями). Мне нужно исправить это с помощью cut.