Вы можете использовать тестовый оператор = ~
. Он принимает (без кавычек) расширенные регулярные выражения (аналогично egrep
).
if [[ "$hostname" =~ (foo|bar)servername(01|02|03) ]]
then echo matches
else echo no match
fi
Возможно, используйте awk для извлечения строк «[Profile]», затем обработайте биты «[Profile... ]», затем отсортируйте результаты численно, оставив только последний (наивысший )один:
highest=$(awk '/^\[Profile[0-9]+\]$/ { s=substr($0, 9); sub("]","", s); print s}' < /home/$myuser/.mozilla/firefox/profiles.ini |sort -n | tail -1)
highest=$((highest + 1))
printf "[Profile%d]
Name=NewProfile
IsRelative=1
Path=NewPath" "$highest" >> /home/$myuser/.mozilla/firefox/profiles.ini
Почему бы не использовать все awk
подход?
awk '
/Profile[0-9]+/ {PRNR = $0
gsub (/[^0-9]/, "", PRNR)
}
1
END {print ""
print "[Profile" ++PRNR "]"
print "Name=NewProfile"
print "IsRelative=1"
print "Path=NewPath >> /home/$myuser/.mozilla/firefox/profiles.ini"
}
' profiles.ini
Простой способ:
/usr/bin/firefox -CreateProfile profileName
Он сохранит профили в файле profiles.ini
и создаст новый(profileName
в этом случае ).