Portál AbcLinuxu, 18. prosince 2025 00:05
$ echo "AbCDeFgh" |tr [:lower:] [:upper:]
abc2cba převést na [aA][bB][cC] bcd2dcb převést na [bB][cC][dD]a to tak, že si pomocí
cut -d2 -f1 vyříznu to před dvojkou a pak to nějak nacpu do [??][??][??]... jenže to bude asi dost kódu... Tedy pokud použiju tr, tak určitě.
r=''
while [ -n "$s" ]; do
l="${s:0:1}"
u=`echo "$l" | tr '[:lower:]' '[:upper:]'`
r="${r}[${l}${u}]"
s="${s:1}"
done
Ale, upřímně řečeno, v céčku to napíšete za třetinu času a poběží to o řád rychleji (spíš o několik řádů).
abc. Jenže to nic nevypíše.
Ale, upřímně řečeno, v céčku to napíšete za třetinu času a poběží to o řád rychleji (spíš o několik řádů).No, to je možný, ale nenapíšu to v Bashi, natož v C.
[tsunami@vodik]$ s=ToJeAlEkRaViNa
[tsunami@vodik]$ r=''
[tsunami@vodik]$ while [ -n "$s" ]; do
> l="${s:0:1}"
> u=`echo "$l" | tr '[:lower:]' '[:upper:]'`
> r="${r}[${l}${u}]"
> s="${s:1}"
> done
[tsunami@vodik]$ echo $r
[TT][oO][JJ][eE][AA][lL][EE][kK][RR][aA][VV][iI][NN][aA]
shopt -s nocaseglob.
#!/bin/bash
for file in *
do
newfile=`echo "$file" | tr A-Z a-z`
mv "$file" $newfile
done
s=`echo $1 | cut -d2 -f1`
while [ -n "$s" ]
do
l="${s:0:1}"
u=`echo "$l" | tr '[:lower:]' '[:upper:]'`
r="${r}[${l}${u}]"
s="${s:1}"
done
echo *.${r}Chci to pak použít ve funkci:
WL() {
s=`echo $1 | cut -d2 -f1`
while [ -n "$s" ]
do
l="${s:0:1}"
u=`echo "$l" | tr '[:lower:]' '[:upper:]'`
r="${r}[${l}${u}]"
s="${s:1}"
done
echo *.${r}
}
WLa proměnná r je prázdná. Proč to nejde ve funkci?
[tsunami@vodik]$ WL() {
> s=`echo $1 | cut -d2 -f1`
> r=''
> while [ -n "$s" ]
> do
> l="${s:0:1}"
> u=`echo "$l" | tr '[:lower:]' '[:upper:]'`
> r="${r}[${l}${u}]"
> s="${s:1}"
> done
> echo *.${r}
> }
[21:17:12]-[~]-
[tsunami@vodik]$ WL ahoj2magor
*.[aA][hH][oO][jJ]
Nezapomeň na to r='', to je tam docela potřeba.
$1).
$1 z shellu. :/ Jak ho přemluvím?
WL "$1"'?
Snad jsem tady taky neudělal nějakou blbost (no, zřejmě jo)
WL() {
s=`echo $1 | cut -d2 -f1`
r=''
while [ -n "$s" ]
do
l="${s:0:1}"
u=`echo "$l" | tr '[:lower:]' '[:upper:]'`
r="${r}[${l}${u}]"
s="${s:1}"
done
echo *.${r}
}
aac2wav() {
for F in `WL $1`
do
faad -o "${F%%.*}.wav" "$F"
done
}Proč je ve funkci aac2wav zase prázdno?
WL expanduje $1 na první parametr funkce WL, v těle funkce aac2wav na první parametr funkce aac2wav a jinde na první parametr skriptu.
find . -maxdepth 0 -type f -iname "*.$1"'
Jak bys to chtěl tedy udělat?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.