bash: Loopar och Zenity [LÖST]

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Johnny Rosenberg »

Johnny Rosenberg skrev:Ska kolla det där med ${Tempfile} också…
He he he… jag var inte särskilt konsekvent när det gäller citat-tecknen för ${Tempfile}, såg jag.

Men jag redigerade inlägget med koden så nu ska det vara ”rätt”.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Konservburk »

Johnny Rosenberg skrev:Jag tycker för min del att bash är tillräckligt portabelt och jag vill hellre lära mig fördelarna med att använda bash istället för att vara kompatibel med sh.
Då kanske vi ska bashifiera skriptet lite istället. ;D

Vad är förresten tanken bakom detta?

Kod: Markera allt

   echo "${Line}" | sed "s;\(.*\);DESCRIPTION=\1;" >> "${Tempfile}"
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Johnny Rosenberg »

Konservburk skrev:
Johnny Rosenberg skrev:Jag tycker för min del att bash är tillräckligt portabelt och jag vill hellre lära mig fördelarna med att använda bash istället för att vara kompatibel med sh.
Då kanske vi ska bashifiera skriptet lite istället. ;D

Vad är förresten tanken bakom detta?

Kod: Markera allt

   echo "${Line}" | sed "s;\(.*\);DESCRIPTION=\1;" >> ${Tempfile}
Det är att jag först skapar en textfil som ser ut så här (exempelvis):
Drums: Someone
Bass guitar: Someone else
Rhythm guitar: A friend
Lead Guitar: Me
Men denna information ska ju in i en FLAC-fil senare i form av taggar. I FLAC-filer är det ju tillåtet att ha flera taggar av samma typ, exempelvis om det är två artister som framför en låt så kan man ange dem i var sin ARTIST-tagg.

När textfilen skapas öppnar skriptet den i gedit (eller vad man nu angett i sin Editor-variabel), detta för att man enkelt ska kunna granska helheten av det man klickat sig fram till och kanske komplettera eller ändra.

Då vill jag ju att textfilen ska vara så läsbar som möjligt.

Programmet metaflac däremot, vill att filen ska se ut så här:
DESCRIPTION=Drums: Someone
DESCRIPTION=Bass guitar: Someone else
DESCRIPTION=Rhythm guitar: A friend
DESCRIPTION=Lead Guitar: Me
Detta vill ja ju helst slippa i textfilen när jag själv ska in där och rota, men jag lägger alltså till det med sed i den rad du citerade strax innan metaflac får ta del av informationen.

Visserligen finns ju en möjlighet om man tar med ”DESCRIPTION=” redan från början, att byta namn på fält och samtidigt passa på att inkludera andra fält, men jag föredrar att på detta sätt minimera risken för felstavningar och liknande.

Har dessutom tänkt att skriva ett annat skript för andra vanliga taggar och eventuellt göra ett skript som kör de andra skripten i en viss följd eller via val i någon meny eller liknande. Men en sak i taget och det viktigaste först…
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Johnny Rosenberg »

Konservburk skrev:Då kanske vi ska bashifiera skriptet lite istället. ;D
Några förslag? :)
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Konservburk »

Johnny Rosenberg skrev:Detta vill ja ju helst slippa i textfilen när jag själv ska in där och rota, men jag lägger alltså till det med sed i den rad du citerade strax innan metaflac får ta del av informationen.
OK, då är jag med.

Anledningen till att jag frågade var att tyckte det borde gå lika bra med:

Kod: Markera allt

   echo "DESCRIPTION=${Line}" >> "${Tempfile}"
Men nu när jag förstår vad du är ute efter så inser jag att du istället borde kunna ersätta alla dessa rader:

Kod: Markera allt

mv "${Tempfile}" "${Tempfile}.old"
touch ${Tempfile}
while read Line; do
   echo "${Line}" | sed "s;\(.*\);DESCRIPTION=\1;" >> "${Tempfile}"
done < "${Tempfile}.old"
...med en enda sed-rad så här:

Kod: Markera allt

sed -i 's/^/DESCRIPTION=/' "$Tempfile"
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: bash: Loopar och Zenity [LÖST]

Inlägg av ubot »

Ja, tänka sig. Det fungerar ju:

Kod: Markera allt

#!/bin/bash

a=0
while
    (( a++ ))
    echo "\$a variable is: $a"
[[ "$a" -lt "10" ]]
do :
done
Vad betyder : efter do? Varför ska det vara ett :-tecken efter do?
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Johnny Rosenberg »

Konservburk skrev:
Johnny Rosenberg skrev:Detta vill ja ju helst slippa i textfilen när jag själv ska in där och rota, men jag lägger alltså till det med sed i den rad du citerade strax innan metaflac får ta del av informationen.
OK, då är jag med.

Anledningen till att jag frågade var att tyckte det borde gå lika bra med:

Kod: Markera allt

   echo "DESCRIPTION=${Line}" >> "${Tempfile}"
Stod just i duschen och tänkte på det också. Har ju försökt lära mig lite om sed de senaste dagarna och nu har jag uppenbarligen snöat in på det. I just den raden behövs ju inte sed alls.
Konservburk skrev:Men nu när jag förstår vad du är ute efter så inser jag att du istället borde kunna ersätta alla dessa rader:

Kod: Markera allt

mv "${Tempfile}" "${Tempfile}.old"
touch ${Tempfile}
while read Line; do
   echo "${Line}" | sed "s;\(.*\);DESCRIPTION=\1;" >> "${Tempfile}"
done < "${Tempfile}.old"
...med en enda sed-rad så här:

Kod: Markera allt

sed -i 's/^/DESCRIPTION=/' "$Tempfile"
Det där var ju elegant. Tänkte inte på att man kan köra sed direkt på en fil så där. Ännu en lärdom att ta till sig! Och många finns kvar… ;D

Att ersätta ett antal rader med en enda rad tilltalar mig, så det får nog bli så här, med andra ord:

Kod: Markera allt

#!/bin/bash

# add-musician-info
# Use this crap at your own risk…
#
# Johnny Rosenberg 2010-11-19 23:24:38


# REQUIREMENTS (obviously…)
# ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
# bash:					sudo apt-get install bash
# flac:					sudo apt-get install flac
# zenity:				sudo apt-get install zenity
# ubuntu or similar:	sudo apt-get install ubuntu (kidding… ;D )
# gedit:				sudo apt-get install gedit
#			(or use another text editor – just change the line below)
Editor="gedit"
InstrumentsList="${HOME}/.RosenTagg/Instruments"
MusiciansList="${HOME}/.RosenTagg/Musicians"
Tempfile="${HOME}/.RosenTagg/Tempfile"

if [[ $# != 1 ]]; then # Too many or too few arguments
	zenity --error 											\
		--width 300 										\
		--title "Skit bakom tangentbordet" 					\
		--text="Syntax:\n\n\tadd-musician-info FILE"
	exit 1
fi
SoundFile=$1

# Check the file. Is it a real FLAC file?
Error=$(flac -t "${SoundFile}" 2>&1 | grep error)
if [[ $Error ]]; then # Not a real FLAC file
	Message="Filen är antingen ingen FLAC-fil,\n"
	Message="${Message}eller så är den felaktig."
	zenity --error 											\
		--width 300 										\
		--title "Ogiltig fil" 								\
		--text="${Message}"
	exit 1
fi

if [[ -f "${Tempfile}" ]]; then
	rm "${Tempfile}"
fi
touch "${Tempfile}"

Text="Välj från listan.\n"
Text="${Text}Klicka ”Avsluta” när\n"
Text="${Text}du är färdig."
while	Instrument=$(zenity --list							\
			--title "Välj musikinstrument"					\
			--text="${Text}"								\
			--column="Instrument"							\
			--height=460									\
			--width=250 < "${InstrumentsList}") &&			\
		Musicians=$(zenity --list							\
			--title "Välj musikutövare"						\
			--text="${Text}"								\
			--column="Val"									\
			--column="Instrument"							\
			--checklist										\
			--separator=", "								\
			--height=460									\
			--width=250 < "${MusiciansList}"); do
	echo "${Instrument}: ${Musicians}" >> "${Tempfile}"
done

$("${Editor}" "${Tempfile}")
Text="Din text kan nu redigeras i din\n"
Text="${Text}textredigerare. Gör eventuella\n"
Text="${Text}ändringar, spara och stäng text-\n"
Text="${Text}redigeraren.\n\n"
Text="${Text}Vill du fortsätta?\n"
if !	zenity --question									\
			--title="Kontrollera"							\
			--text="${Text}"; then
		zenity --info										\
			--title="Hej då"								\
    		--text="Inga filer har ändrats."
    	rm "${Tempfile}"
		exit 1
fi

Message="Vill du först rensa filen\n"
Message="${Message}från befintliga kommentarer?"
if	zenity --question										\
		--title="Rensa?"									\
		--text="${Message}"; then
	metaflac --remove-tag=DESCRIPTION "${SoundFile}"
fi

metaflac --remove-tag=COMMENT "${SoundFile}"
metaflac --remove-tag=COMMENTS "${SoundFile}"

sed -i 's/^/DESCRIPTION=/' "$Tempfile"

metaflac --import-tags-from="${Tempfile}" "${SoundFile}"

rm "${Tempfile}" "${Tempfile}.old"
Nu återstår väl bara att slänga in ytterligare en och annan kommentar kanske, så att jag förstår var jag (eller kanske snarare ni…) gjort om jag ska in och kika om ett halvår igen eller så…
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Konservburk »

ubot skrev:Ja, tänka sig. Det fungerar ju
Det var ju det jag sa. 8)

Nu undrar jag bara om folket i #bash känner till det där med att man kan anväda klamrar istället för do och done i for-loopar?
ubot skrev:Vad betyder : efter do? Varför ska det vara ett :-tecken efter do?
Det kallas för place a label och användes förr i tiden ihop med goto innan det kommandot togs bort:

Kod: Markera allt

: plats
   kod
   mer kod
goto plats
Därefter kom det att användas för enkla kommentarer innan det mer flexibla # infördes:

Kod: Markera allt

: det här är en kommentar
Numera användas den mest som no-op på det sättet som jag gjorde och som du frågade om. Här är ett annat exempel på samma användning:

Kod: Markera allt

if villkor
then :
else
   kommando
fi
...vilket är ett mer portabelt sätt att skriva detta:

Kod: Markera allt

if ! villkor
then
   kommando
fi
Det kan även användas för att sätta default-värden på variabler så här:

Kod: Markera allt

: ${variabel=defaultvärde}
...dvs att sätta ett värde på variabeln bara om variabeln inte redan finns, vilket kan vara väldigt praktiskt ibland.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: bash: Loopar och Zenity [LÖST]

Inlägg av ubot »

Ok, tackar för info!
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Johnny Rosenberg »

Konservburk skrev:
ubot skrev:Ja, tänka sig. Det fungerar ju
Det var ju det jag sa. 8)

Nu undrar jag bara om folket i #bash känner till det där med att man kan anväda klamrar istället för do och done i for-loopar?
Bash-utvecklarna lär ju känna till det…
Har förresten läst någonstans nyligen om loopar på C-vis, men jag är inte säker på att just for-in-varianten nämndes. Kan man använda {} i alla typer av loopar eller är det bara for-looparna som är förbehållna denna lyx?

På den gamla goda tiden (slutet av 1980- och början av 1990-talet) när man gick på en högskola där man använde terminaler uppkopplade på en Unix-maskin programmerade man ju mest i C, men skolans maskin hade ju inte bash utan csh och senare tcsh. Dessa var ju ganska lika C, men inte ens där har jag för mig att man använde klamrar förbehållslöst. Någon som vet om det finns något annat skal där skript följer C-syntaxen så likt som möjligt?
Konservburk skrev:
ubot skrev:Vad betyder : efter do? Varför ska det vara ett :-tecken efter do?
Det kallas för place a label och användes förr i tiden ihop med goto innan det kommandot togs bort:

Kod: Markera allt

: plats
   kod
   mer kod
goto plats
Därefter kom det att användas för enkla kommentarer innan det mer flexibla # infördes:

Kod: Markera allt

: det här är en kommentar
Vad kan du göra med ”#” som du inte kan göra med ”:”? Alltså, på vilket sätt är ”#” mer flexibelt?
Konservburk skrev:Numera användas den mest som no-op på det sättet som jag gjorde och som du frågade om. Här är ett annat exempel på samma användning:

Kod: Markera allt

if villkor
then :
else
   kommando
fi
...vilket är ett mer portabelt sätt att skriva detta:

Kod: Markera allt

if ! villkor
then
   kommando
fi
Det kan även användas för att sätta default-värden på variabler så här:

Kod: Markera allt

: ${variabel=defaultvärde}
...dvs att sätta ett värde på variabeln bara om variabeln inte redan finns, vilket kan vara väldigt praktiskt ibland.
Det där var intressant, det ska jag komma ihåg. Det blir ju nästan som att deklarera en variabel, på sätt och vis.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Konservburk »

Johnny Rosenberg skrev:
Konservburk skrev:Nu undrar jag bara om folket i #bash känner till det där med att man kan anväda klamrar istället för do och done i for-loopar?
Bash-utvecklarna lär ju känna till det…
Jo, de gör de förstås.
Johnny Rosenberg skrev:Har förresten läst någonstans nyligen om loopar på C-vis, men jag är inte säker på att just for-in-varianten nämndes.
Det går ju göra så här, vilket är ganska likt C, förutom att det är dubbelparantes:

Kod: Markera allt

for ((i=0; i<5; i++)) {
   echo $i
}
Johnny Rosenberg skrev:Kan man använda {} i alla typer av loopar eller är det bara for-looparna som är förbehållna denna lyx?
Av någon outgrundlig anledning så fungerar det bara med just for-loopar.
Johnny Rosenberg skrev:På den gamla goda tiden (slutet av 1980- och början av 1990-talet) när man gick på en högskola där man använde terminaler uppkopplade på en Unix-maskin programmerade man ju mest i C, men skolans maskin hade ju inte bash utan csh och senare tcsh. Dessa var ju ganska lika C, men inte ens där har jag för mig att man använde klamrar förbehållslöst. Någon som vet om det finns något annat skal där skript följer C-syntaxen så likt som möjligt?
Det finns ett skal som heter rc som jag har för mig kommer ganska nära C-syntax.

Kod: Markera allt

sudo apt-get install rc
Johnny Rosenberg skrev:Vad kan du göra med ”#” som du inte kan göra med ”:”? Alltså, på vilket sätt är ”#” mer flexibelt?
Du måste ha ett mellanrum efter : innan själva kommentaren, vilket du inte behöver med #

Kod: Markera allt

#kommentar
:det här fungerar inte
: men det här fungerar
Med : kan du inte ha kommentarer i slutet av en kod-rad som du kan med #, iaf inte utan ett extra semikolon:

Kod: Markera allt

kommando #kommentar
kommando : det här fungerar inte
kommando ;: men det här fungerar
Men huvudanledningen att man bytte till # var nog för att #! infördes. Innan körde man med : på första raden om det var ett sh-skript och med # på första raden om det var ett csh-skript. Men det blir ju ohållbart i längden i takt med att det kommer fler skript-språk.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Johnny Rosenberg »

Konservburk skrev:
Johnny Rosenberg skrev:
Konservburk skrev:Nu undrar jag bara om folket i #bash känner till det där med att man kan anväda klamrar istället för do och done i for-loopar?
Bash-utvecklarna lär ju känna till det…
Jo, de gör de förstås.
Fast de verkar inte vara så pigga på dokumentation…
Konservburk skrev:Du måste ha ett mellanrum efter : innan själva kommentaren, vilket du inte behöver med #
Fast det brukar jag ha ändå… Ser snyggare ut då, tycker i alla fall jag. Men de andra aspekterna du nämnde är ju mer avgörande.

En sak som jag har lite svårt att vänja mig vid, är ju att allting verkar vara strängar och ändå kan man räkna med dem som om de vore numeriska om de råkar innehålla siffror. Känns väldigt förvirrande…
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Konservburk »

Johnny Rosenberg skrev:En sak som jag har lite svårt att vänja mig vid, är ju att allting verkar vara strängar och ändå kan man räkna med dem som om de vore numeriska om de råkar innehålla siffror. Känns väldigt förvirrande…
Det går faktiskt att ha riktiga heltalsvariabler istället för bara strängar överallt. Och då kan du till och med räkna med dem rakt av utan en massa extra paranteser. Testa detta så får du se vad jag syftar på:

Kod: Markera allt

declare -i heltal=5
echo $heltal
heltal++
echo $heltal
heltal+=2
echo $heltal
Det här är förstås bash-specifikt, men det var ju inte något hinder för dig. :)
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: bash: Loopar och Zenity [LÖST]

Inlägg av dmz »

Konservburk skrev:
Johnny Rosenberg skrev:En sak som jag har lite svårt att vänja mig vid, är ju att allting verkar vara strängar och ändå kan man räkna med dem som om de vore numeriska om de råkar innehålla siffror. Känns väldigt förvirrande…
Det går faktiskt att ha riktiga heltalsvariabler istället för bara strängar överallt. Och då kan du till och med räkna med dem rakt av utan en massa extra paranteser. Testa detta så får du se vad jag syftar på:

Kod: Markera allt

declare -i heltal=5
echo $heltal
heltal++
echo $heltal
heltal+=2
echo $heltal
Det här är förstås bash-specifikt, men det var ju inte något hinder för dig. :)
Vad gör jag för fel?

Kod: Markera allt

> declare -i foo=2
> foo++
zsh: command not found: foo++
> bash
$ declare -i foo=2
$ foo++
bash: foo++: command not found
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Konservburk »

dmz skrev:Vad gör jag för fel?

Kod: Markera allt

> declare -i foo=2
> foo++
zsh: command not found: foo++
> bash
$ declare -i foo=2
$ foo++
bash: foo++: command not found
Det är jag som gjorde fel. :-[

foo++ fungerar inte, det måste vara foo+=1

Jag har inte knappt använt detta själv, och dumt nog sket jag i att testa innan jag postade inlägget. Det här ska åtminstone fungera:

Kod: Markera allt

declare -i foo=3
foo+=1
echo $foo
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: bash: Loopar och Zenity [LÖST]

Inlägg av dmz »

Intressant.

För att återknyta till rc som är defaultskalet i plan9 så måste jag säga att dess syntax, om än något märklig på vissa ställen, är betydligt trevligare än *sh's.
Lite synd att Glenda är så otroligt värdelös, allting annat verkar så oerhört fint. :(
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Johnny Rosenberg »

dmz skrev:Intressant.

För att återknyta till rc som är defaultskalet i plan9 så måste jag säga att dess syntax, om än något märklig på vissa ställen, är betydligt trevligare än *sh's.
Lite synd att Glenda är så otroligt värdelös, allting annat verkar så oerhört fint. :(
Vad är Glenda…?
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Johnny Rosenberg »

Hittade Glenda på Wikipedia, så det är lugnt… tror jag. ;D

I alla fall, apropå skriptet hela den här tråden handlar om, delvis åtminstone, så kom jag på att man ju får precis noll respons om vad resultatet blev, så jag la till följande på slutet, precis före den sista raden i skriptet:

Kod: Markera allt

metaflac --export-tags-to="${Tempfile}" "${SoundFile}"
sed -i 's/DESCRIPTION=//' "${Tempfile}"
sed -i 's/\(^.\)\(.*\)=\(.*\)/\U\1\L\2:\n\E\3\n/' "${Tempfile}"

zenity --text-info \
	--title="Taggar i ”${SoundFile}”" \
	--height=768 \
	--width=600 \
	--filename="${Tempfile}"
Exempelvis kanske FLAC-filen innehåller följande, enligt metaflac:

Kod: Markera allt

TITLE=Me And Bobby McGee
ARTIST=Mikael Nordgren & Johnny Rosenberg
ALBUM=Wodixprojektet
DISCNUMBER=1
DATE=2010
TRACKNUMBER=02
GENRE=Pop
COMPOSER=Kris Kristofferson, Fred Foster
PERFORMER=Roger Miller
ENCODED-BY=Audacity 1.3.12-beta
DESCRIPTION=Drum machine programming: Johnny Andersson
DESCRIPTION=Bass guitar: Johnny Andersson
DESCRIPTION=Rhythm guitar: Johnny Andersson
DESCRIPTION=Acoustic guitar: Johnny Rosenberg
DESCRIPTION=Lead guitar: Johnny Rosenberg
DESCRIPTION=Backing vocals: Johnny Rosenberg, Mikael Nordgren
DESCRIPTION=Lead vocal: Mikael Nordgren
Alla taggar här som inte heter DESCRIPTION är skapade med EasyTAG, resten har jag skapat med skriptet. Det är alltså EasyTAGs fel att PERFORMER är Roger Miller, för det fältet kallas nämligen ”Originalartist” i EasyTAG och det är därför jag skrev Roger Miller där en gång i tiden. Det är alltså inte han som framför inspelningen ifråga, vilket också framgår av mina DESCRIPTION-taggar…

Efter att ovanstående kod utförts kommer zenity att leverera (hatar det ordet…) en textruta med följande innehåll:

Kod: Markera allt

Title:
Me And Bobby McGee

Artist:
Mikael Nordgren & Johnny Rosenberg

Album:
Wodixprojektet

Discnumber:
1

Date:
2010

Tracknumber:
02

Genre:
Pop

Composer:
Kris Kristofferson, Fred Foster

Performer:
Roger Miller

Encoded-by:
Audacity 1.3.12-beta

Drum machine programming: Johnny Andersson
Bass guitar: Johnny Andersson
Rhythm guitar: Johnny Andersson
Acoustic guitar: Johnny Rosenberg
Lead guitar: Johnny Rosenberg
Backing vocals: Johnny Rosenberg, Mikael Nordgren
Lead vocal: Mikael Nordgren
Detta är ju lite mer lättläst, tycker jag.

Dock infinner sig känslan obönhörligt, att koden ovan kunde optimeras på ett eller annat sätt, exempelvis så att den blir smidigare, snabbare eller både ock… Någon som har några synpunkter? Har ju använt sed en del här och det är ju ett trevligt verktyg, men det kanske finns tillfällen då annat passar bättre?
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: bash: Loopar och Zenity [LÖST]

Inlägg av Konservburk »

Johnny Rosenberg skrev:Dock infinner sig känslan obönhörligt, att koden ovan kunde optimeras på ett eller annat sätt, exempelvis så att den blir smidigare, snabbare eller både ock… Någon som har några synpunkter? Har ju använt sed en del här och det är ju ett trevligt verktyg, men det kanske finns tillfällen då annat passar bättre?
Du undrar om din två sed-rader ovan kan ersättas med något annat? De kan ju förstås ersättas med en enda sed-rad, vilket blir något effektivare eftersom sed då bara behöver gå igenom och ändra i filen en gång istället för två.
Skriv svar

Återgå till "Terminalforum"