Kod: Markera allt
echo "$x" | EttKommando "" "Tom"
Användningen jag tänker mig är att resultatet av exempelvis sed, awk, grep eller liknande aldrig får bli en tom sträng, utan om så är fallet ska strängens värde bli något jag har fördefinierat.
Kod: Markera allt
echo "$x" | EttKommando "" "Tom"
Kod: Markera allt
x=$(EttKommando)
x=${x:="Tom"}
Inser nu att jag förklarade hur opedagogiskt som helst. Vad jag var ute efter var ett kommando som ersatte mitt trams där i form av ”EttKommando "" "Tom"”. Alltså, vad skulle jag skriva där istället för detta påhittade kommando?Osprey skrev:Om du kan stå ut med att använda två rader, så kan du ju alltid göra det som:...men det är möjligt att det går att göra ännu mer kompakt...Kod: Markera allt
x=$(EttKommando) x=${x:="Tom"}
Kod: Markera allt
if (x=="") {
x="Tom";
}
Kod: Markera allt
x=$(echo ${x} | blaha "" "Tom")
Hur då? Det finns ju inget kommando som heter ”EttKommando”, så allt jag får är ju ett felmeddelande och vad som då händer på andra raden blir ju då lite oväsentligt…Osprey skrev:Du får exakt det resultatet med det jag skrev också, även om det blir två rader...
Det finns ett stycke om detta i man bash:Johnny Rosenberg skrev:Okej, ger upp. Problemet är visserligen löst, men jag har nu sökt frenetiskt efter någonstans där jag kan hitta en förklaring till varför ”x=${x:="Tom"}” fungerar, men inte hittat något om ”:=” som har med bash att göra, trots ett flertal olika sökförsök (kul ord, förresten…).
Någon som har lust att bjuda på en länk? Vill ju helst inte använda kod jag inte förstår till 100%, även om det också hänt vid ett fåtal tillfällen.
Kod: Markera allt
${parameter:=word}
Assign Default Values. If parameter is unset or null, the
expansion of word is assigned to parameter. The value of param-
eter is then substituted. Positional parameters and special
parameters may not be assigned to in this way.
Kod: Markera allt
: ${variabel:=text}
Dåligt av mig att jag inte hittade det i manualsidorna. Borde läsa på hur man söker efter text där.Konservburk skrev:Det finns ett stycke om detta i man bash:Johnny Rosenberg skrev:Okej, ger upp. Problemet är visserligen löst, men jag har nu sökt frenetiskt efter någonstans där jag kan hitta en förklaring till varför ”x=${x:="Tom"}” fungerar, men inte hittat något om ”:=” som har med bash att göra, trots ett flertal olika sökförsök (kul ord, förresten…).
Någon som har lust att bjuda på en länk? Vill ju helst inte använda kod jag inte förstår till 100%, även om det också hänt vid ett fåtal tillfällen.
Det finns även en alternativ beskrivning här: http://tldp.org/LDP/abs/html/parameter- ... l#DEFPARAMKod: Markera allt
${parameter:=word} Assign Default Values. If parameter is unset or null, the expansion of word is assigned to parameter. The value of param- eter is then substituted. Positional parameters and special parameters may not be assigned to in this way.
Det hela används smidigast på detta sätt:
Om $variabel är tom så får den istället värdet text, men i annat fall så behåller den sitt tidigare värde.Kod: Markera allt
: ${variabel:=text}