Я предполагаю, что “неанглийским языком обозначает буквами”, Вы имеете в виду буквы кроме 26 неукрашенных букв Латинского алфавита. Затем строго говоря вот тест, который отвечает Вашим требованиям:
if tmp=${WD//[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]/};
[[ $tmp = *[[:alpha:] ]* ]]; then
# $WD contains letters other than A-Z and a-z or a space
Таким образом, разделите английские буквы и посмотрите, существуют ли какие-либо буквы или оставленные пробелы.
Я подозреваю, что Вы на самом деле стараетесь избегать всех символов неASCII и всего пробела, включая тех, которые не являются буквами такой как ¿
или £
или ٣
. Можно сделать это путем соответствия символам, которые не являются !
через ~
(т.е. символы ASCII кроме пробела):
if (LC_ALL=C; [[ $WD = *[^!-~]* ]]) then …
Обратите внимание что диапазоны как !-~
или A-Z
не всегда делайте то, что Вы ожидали бы, когда Вы имеете LC_COLLATE
набор. Следовательно мы устанавливаем LC_ALL
к известному значению (LC_ALL
козыри все настройки локали).
Если Вы проверяете на “необычные” символы в файлах (почему еще исключают даже пробелы, которые позволяются на большинстве современных платформ), могло бы иметь смысл иметь более ограниченные списки, который не позволяет непортативных символов. POSIX только позволяет буквы ASCII, цифры и -._
.
if (LC_ALL=C; [[ $WD = *[^-._0-9A-Za-z]* ]]) then …
Запустите с принятого ответа на этот вопрос: Как я могу получить имя распределения и номер версии в простом сценарии оболочки?. Затем решите, какой диспетчер пакетов Вы хотите использовать на основе обнаруженного распределения.
Вместо определяют программы в двоичном представлении, необходимо запустить с, определяют дистрибутивы,
Просто дайте Вам немного строк, который работает в сценариях удара:
declare -A osInfo;
osInfo[/etc/redhat-release]=yum
osInfo[/etc/arch-release]=pacman
osInfo[/etc/gentoo-release]=emerge
osInfo[/etc/SuSE-release]=zypp
osInfo[/etc/debian_version]=apt-get
for f in ${!osInfo[@]}
do
if [[ -f $f ]];then
echo Package manager: ${osInfo[$f]}
fi
done
Althrough этим частям нельзя доверять, но обычно люди, не сделает этого.
apt-get
. – Jim Paris 23.08.2012, 19:52