С немного дополнительным переписывают. (Поскольку Вы используете определенное для Bash регулярное выражение, просто заполняете BASH_REMATCH
массив вместо того, чтобы управлять разделением слова.)
checkIp()
{
local ip="$1"
if [[ "$ip" =~ ^([0-9]{1,3})\.([0-9]{1,3}|\*)\.([0-9]{1,3}|\*)\.([0-9]{1,3}|\*)$ ]]; then
for ((i=1;i<=4;i++)); do
[[ "${BASH_REMATCH[i]}" == '*' || "${BASH_REMATCH[i]}" -le 255 ]] || return 1
done
return 0
fi
return 1
}
Обновление согласно комментарию владельца для запрещения чисел после “*”:
checkIp()
{
local ip="$1"
local asterisk=''
if [[ "$ip" =~ ^([0-9]{1,3})\.([0-9]{1,3}|\*)\.([0-9]{1,3}|\*)\.([0-9]{1,3}|\*)$ ]]; then
for ((i=1;i<=4;i++)); do
[[ "${BASH_REMATCH[i]}" == '*' || ( ! "$asterisk" && "${BASH_REMATCH[i]}" -le 255 ) ]] || return 1
[[ "${BASH_REMATCH[i]}" == '*' ]] && asterisk='1'
done
return 0
fi
return 1
}
Изменить : см. Другой ответ, используйте EternalTerminal : он имеет поддержку tmux -CC и может быть установлен в Linux. Вроде совсем новый, не знаю насколько стабильно.
То, что вы спрашиваете, похоже, еще не разработано для Linux с использованием основных эмуляторов терминалов:
Еще одна идея - запустить ваш любимый двоичный файл Mac Iterm2 в среде Linux. Но доступные в настоящее время решения не поддерживают его:
В Windows попробуйте ConEmu, для Linux GNU Screen, потому что сеансы tmux похожи на screen -d -m
(другие сеансы в том же экземпляре screen -x
)