Мне нужно кэшировать строку из файла, чтобы позже выполнить поиск с помощью grep. В этой строке перед скобкой стоит sla sh. После того, как я беру строку и повторяю ее в оболочке, она ведет себя так, как я ожидал; но в моем сценарии он сбрасывает sla sh off.
Ниже много текста, но важная часть строки - «(Остающееся время)»
Строка в файле:
"session_will_expire_message" = "User session will expire in \(remainingTime). Please sign in again to avoid expiration in the middle of the transaction.";
Команда оболочки (работает должным образом):
% line="\"User session will expire in \(remainingTime). Please sign in again to avoid expiration in the middle of the transaction.\";"
% echo $line
"User session will expire in \(remainingTime). Please sign in again to avoid expiration in the middle of the transaction.";
% echo -E - $line
"User session will expire in \(remainingTime). Please sign in again to avoid expiration in the middle of the transaction.";
% val="$(echo -E - $line | cut -d";" -f1 | cut -d"=" -f2-)"
% echo $val
"User session will expire in \(remainingTime). Please sign in again to avoid expiration in the middle of the transaction."
% echo -E - "${val}"
"User session will expire in \(remainingTime). Please sign in again to avoid expiration in the middle of the transaction."
Скрипт (НЕ работает должным образом):
while read line; do
if [[ $(echo $line | grep -c "=") -gt 0 ]]; then
key="$(echo $line | cut -d";" -f1 | cut -d"=" -f1 | tr -d " ")"
val="$(echo -E - $line | cut -d";" -f1 | cut -d"=" -f2-)"
/* !!--> */ [[ $IS_VERBOSE == "TRUE" ]] && echo "key: $key" && echo -E - "value: ${val}"
/* !!--> */ [[ $key != "" && "${val}" != "" ]] && LOCALIZED_PAIR[$key]="${val}"
fi
done < $LOCALIZED_DICT # <-- This is an URI for .strings file
Строки, отмеченные знаком «!! -> "выводятся в оболочку и в файл без ключа sla sh ...
:« session_will_expire_message »
value:« Сеанс пользователя истекает через ( Остающееся время). Пожалуйста, войдите снова, чтобы избежать истечения срока в середине транзакции. "
Почему мой скрипт работает иначе и как это исправить?
РЕДАКТИРОВАТЬ:
Кажется, что sla sh вырезается из-за while l oop:
% while read l; do echo $l; done < ~/Desktop/tmpOutput
"User session will expire in (remainingTime). Please sign in again to avoid expiration in the middle of the transaction.";
Если слэши разделяются, когда while l oop читает строку, есть ли способ избежать этого?