Я искал что-то подобное, но вместо создания регулярного выражения я просто хотел заменить акцентированные символы на их эквиваленты ASCII. Вдохновленный ответом 999 и статьей в A List Apart ( http://www.alistapart.com/articles/accent-folding-for-auto-complete/ ), я пришел op со следующей функцией. Конечно, он может быть изменен для конкретных реализаций:
var accent_fold = (function () {
var accent_map = {
'à': 'a', 'á': 'a', 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', // a
'ç': 'c', // c
'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', // e
'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', // i
'ñ': 'n', // n
'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ø': 'o', // o
'ß': 's', // s
'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', // u
'ÿ': 'y' // y
};
return function accent_fold(s) {
if (!s) { return ''; }
var ret = '';
for (var i = 0; i < s.length; i++) {
ret += accent_map[s.charAt(i)] || s.charAt(i);
}
return ret;
};
} ());
использование:
var someText = "lôõk mä, nø hånds!";
someText = accent_fold(someText);
// someText now contains: "look ma, no hands!"
экспорт
делает переменную доступной для подпроцессов.
То есть
export name=value
означает, что имя переменной доступно любому процессу , который вы запускаете из этого процесса оболочки. Если вы хотите, чтобы процесс использовал эту переменную, используйте export
и запустите процесс из этой оболочки.
name=value
означает, что область действия переменной ограничена оболочкой и недоступна для других процессов. . Вы могли бы использовать это (скажем) для переменных цикла, временных переменных и т. Д.
Важно отметить, что экспорт переменной не делает ее доступной для родительских процессов. То есть указание и экспорт переменной в порожденном процессе не делает ее доступной в процессе, который ее запустил.
export
сделает переменную доступной для всех оболочек, созданных из текущей оболочки.
Другие ответили, что экспорт делает переменную доступной для подоболочек, и это правильно, но это всего лишь побочный эффект. Когда вы экспортируете переменную, она помещает эту переменную в среду текущей оболочки (т.е. оболочка вызывает putenv (3) или setenv (3)). Среда процесса наследуется через exec, что делает переменную видимой в подоболочках.
Редактировать (с пятилетней перспективой): это глупый ответ. Цель «экспорта» - заставить переменные «находиться в среде последовательно выполняемых команд», независимо от того, являются ли эти команды подоболочками или подпроцессами.
в ответах говорится:
$ foo="Hello, World"
$ echo $foo
Hello, World
$ bar="Goodbye"
$ export foo
$ bash
bash-3.2$ echo $foo
Hello, World
bash-3.2$ echo $bar
bash-3.2$
Вот еще один пример:
VARTEST="value of VARTEST"
#export VARTEST="value of VARTEST"
sudo env | grep -i vartest
sudo echo ${SUDO_USER} ${SUDO_UID}:${SUDO_GID} "${VARTEST}"
sudo bash -c 'echo ${SUDO_USER} ${SUDO_UID}:${SUDO_GID} "${VARTEST}"'
Только при использовании экспорта VARTEST значение VARTEST доступно в sudo bash -c '...'!
Дополнительные примеры см .:
bash-hackers.org/wiki/doku.php/scripting/processtree