Marcin Debowski
2022-12-17 02:14:55 UTC
Skrypczę ostatnio pod Qnapowskim Linuksem aby ułatwić sobie życie i
natrafiłem na pozornie trywialny problem zmiany pierwszej litery na dużą.
Powłoką jest bash GNU bash, version 3.2.57(2)-release
(arm-unknown-linux-gnueabihf) i takie operacje jak np.:
na ww. nie działa:
NN="banana"; echo "${NN[@]^}"
banana
Co gorsze, sed jest też przerobiony (i sporo innych) i takie coś:
echo "banana"| sed 's/^\(.\)/\U\1/g'
nie zadziała.
tr też nie działa
echo "banana"| tr '[:lower:]' '[:upper:]'
banana
Jakimś cudem awk działa
echo "banana" | awk '{print toupper(substr($0, 1, 1)) substr($0, 2)}'
Banana
ale wolałbym nie używać zewnętrznych poleceń.
Jakieś pomysły jak to zrobić na stringach pod gołym bashem (pierwszy
przykład), czy dla ver<4 się po prostu nie da?
natrafiłem na pozornie trywialny problem zmiany pierwszej litery na dużą.
Powłoką jest bash GNU bash, version 3.2.57(2)-release
(arm-unknown-linux-gnueabihf) i takie operacje jak np.:
na ww. nie działa:
NN="banana"; echo "${NN[@]^}"
banana
Co gorsze, sed jest też przerobiony (i sporo innych) i takie coś:
echo "banana"| sed 's/^\(.\)/\U\1/g'
nie zadziała.
tr też nie działa
echo "banana"| tr '[:lower:]' '[:upper:]'
banana
Jakimś cudem awk działa
echo "banana" | awk '{print toupper(substr($0, 1, 1)) substr($0, 2)}'
Banana
ale wolałbym nie używać zewnętrznych poleceń.
Jakieś pomysły jak to zrobić na stringach pod gołym bashem (pierwszy
przykład), czy dla ver<4 się po prostu nie da?
--
Marcin
Marcin