Portál AbcLinuxu, 5. května 2025 23:10

Dotaz: tr a proměnné

31.5.2013 14:16 mcm | skóre: 13 | blog: linca | domažlice
tr a proměnné
Přečteno: 479×
Odpovědět | Admin
Ahoj, chtěl bych pomocí tr změnit velikost písmen v proměnné a takto upravenou velikost zase zpátky do proměnné vložit. Není rozhodující, zda to bude ta samá proměnná nebo jiná.
Příklad: mám skript
#!/bin/sh

# Skript pro stazeni a zobrazeni informaci o pocasi konkretni ICAO stanice.

case "$1" in
	--help)
		echo "Skript 'weather.sh' stahuje informace o pocasi z druzicoveho serveru 'http://weather.noaa.gov/'."
		echo "Pouziti:"
		echo "weather.sh [bez parametru] vypise informace o pocasi ve stanici LKPR (viz ICAO kody dale)."
		echo "weather.sh --help vypise tuto napovedu."
		echo "weather.sh -i [ICAO] vypise informace o pocasi ve stanici definovane parametrem 'ICAO'."
		echo "Nejcasteji pouzivane ICAO kody (Kody ICAO nutno zapisovat velkymi pismeny!):
		CZ:	Brno Turany	(LKTB)	Karlovy Vary	(LKKV)
			Pardubice	(LKPD)	Plzen Line	(LKLN)
			Praha Kbely	(LKKB)	Praha Ruzyne	(LKPR)
			Ostrava Mosnov	(LKMT)
		O:	Wien		(LOAN)
		ESP:	Barcelona	(LEBL)	Madrid Torrejon	(LETO)
		F:	Paris de Gaulle	(FLPG)
		GR:	Athens		(LGAV)
		H:	Budapest	(LHBP)
		I:	Palermo		(LICJ)	Venezia		(LIPZ)
			Rome (LdV)	(LIRF)
		CH:	Geneve		(LSGG)
		SL:	Bratislava	(LZIB)
		B:	Brussel		(EBMB)
		D:	Berlin Schonef.	(EDDB)	Frankfurt /M.	(EDDF)
		GB:	London Luton	(EGGW)	London Gatwick	(EGKK)"
		echo "Dalsi ICAO kody ke zjisteni na adrese:"
		echo "http://en.wikipedia.org/wiki/International_Civil_Aviation_Organization_airport_code"
		exit 1
		;;
	-i)
		for ICAO in $2; do
			export ICAO=$2
		done
		;;
	*)
		# Zakladni nastaveni v pripade, ze $ICAO neni definovano
		export ICAO=LKPR
		;;
esac

/usr/local/bin/curl -s http://weather.noaa.gov/pub/data/observations/metar/decoded/$ICAO.TXT
echo

exit 0

a abych nemusel jako parametr pořád vypisovat ICAO velkýma písmenama, rád bych operaci trochu zautomatizoval. Je nějaká reálna šance, že půjde upravit velikost písmen proměnné pomocí příkazu tr? Nebo je to špatný postup?

Díkes za jakoukoli radu, případně nasměrování :)
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

31.5.2013 14:28 Kit
Rozbalit Rozbalit vše Re: tr a proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pro tento účel asi bude vhodnější sed.
31.5.2013 14:34 Kit
Rozbalit Rozbalit vše Re: tr a proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin
Aha, už jsem pochopil dotaz
tr 'a-z' 'A-Z'
31.5.2013 14:59 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: tr a proměnné

Spíš

tr '[:lower:]' '[:upper:]'

nebo rovnou

ICAO="${ICAO^^*}"

(vyžaduje bash 4).

31.5.2013 15:12 Kit
Rozbalit Rozbalit vše Re: tr a proměnné
To bych už raději místo toho prvního napsal
sed 's/\(.*\)/\U\1/'
a bude mi to fungovat i česky.
31.5.2013 18:49 mcm | skóre: 13 | blog: linca | domažlice
Rozbalit Rozbalit vše Re: tr a proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj, moc děkuju za rady, zkusim si z výukových důvodů všechny postupy, které jste mi nabídli.
Jen dotaz k tomu tr: jak bych mu předhodil proměnnou a zase jí z něj dostal? Vim jak u souborů, ale u proměnných......
To jen spíš pro úplnost a ukojení mojí zvědavosti.. :D
Díky..
31.5.2013 18:56 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: tr a proměnné
ICAO=`echo "$ICAO" | tr '[:lower:]' '[:upper:]'`

(vnější apostrofy jsou obrácené, vnitřní normální)

1.6.2013 08:44 mcm | skóre: 13 | blog: linca | domažlice
Rozbalit Rozbalit vše Re: tr a proměnné
Tak to bylo přesně ono. Naprosto elegantní řešení. Děkuju moc :)) S tímhle doplňkem se mi ten skript líbí daleko víc :) Ještě jednou díkes...
1.6.2013 09:19 Kit
Rozbalit Rozbalit vše Re: tr a proměnné
Pozor, nefunguje to pro české znaky. Alespoň mně ne.
3.6.2013 12:11 mcm | skóre: 13 | blog: linca | domažlice
Rozbalit Rozbalit vše Re: tr a proměnné
Zkusil jsem to pomoci 'sed ....', ale nejak sem i to nepodarilo rozchodit... takze zkousim ruzny varianty - aspon se tim neco priucim.. mam nastrel, jak to udelat, takze vim, co mam hledat.. napisu, pokud si uz s tim nebudu vedet rady :)
dikes za upozorneni a rady :)
3.6.2013 12:29 Kit
Rozbalit Rozbalit vše Re: tr a proměnné
Mělo by to vypadat analogicky jako s tím "tr". Vyzkoušeno:
ICAO="příšerně žluťoučký"
ICAO=`echo "$ICAO" | sed 's/\(.*\)/\U\1/'`
echo "$ICAO"

výstup:
PŘÍŠERNĚ ŽLUŤOUČKÝ
Hlavně nepoplést uvozovky, apostrofy a obrácené apostrofy. Každý symbol má odlišný význam.
7.6.2013 17:02 mcm | skóre: 13 | blog: linca | domažlice
Rozbalit Rozbalit vše Re: tr a proměnné
Zkoušel jsem to na jednom kompu a tam mi tohle nefungovalo.. Poměrně dlouho jsem si s tim lámal hlavu, nakonec mě napadlo to vyzkoušet jinde. Problém byl pouze ve verzi shellu, resp. sedu. Ten na tom prvnim kompu byl již hooodně za zenitem :))

Díky za radu, sice mam problém ten zápis pochopit (to je ale otázka času stráveného studiem regulárních výrazů), nicméně funguje velmi dobře, takže jsem jej zahrnul misto 'tr' do skriptu.

Ještě jednou díky za radu a nakopnutí vám oběma :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.