Új hozzászólás Aktív témák
-
Jester01
veterán
válasz
szoke12
#1430
üzenetére
Ez egy négyzetes megoldás, ha már ciklust akarsz akkor miért nem egyszer mész végig a kimeneten?
Mi van ha időközben megváltozik a fájllista?
Directoryk méretét kell nézni?sum=0
for x in $(find . -maxdepth 1 -type f -printf '%s\n')
do
sum=$((sum + x))
done
echo $sum-vagy-
(find . -maxdepth 1 -type f -printf '%s+'; echo 0) | bc
ls használatával is lehet hasonlót, plusz nyilván a du még mindig erre való.
-
Jester01
veterán
válasz
szoke12
#1373
üzenetére
bash specifikus megoldás arra az esetre ha mindenképp van az elején nulla vagy ha kell az elejére nulla akkor is ha nincs:
$ shopt extglob
extglob on
$ x=123
$ echo 0${x##+(0)}
0123
$ x=0123
$ echo 0${x##+(0)}
0123
$ x=00123
$ echo 0${x##+(0)}
0123
$ x=000123
$ echo 0${x##+(0)}
0123
$ x=12003
$ echo 0${x##+(0)}
012003Szabványos megoldás:
case "$1" in
0*)
echo -n 0
expr substr "$1" \( index "$1" 123456789 \) \( length "$1" \)
;;
*)
echo "$1"
;;
esac -
-
buherton
őstag
válasz
szoke12
#1362
üzenetére
Én perl-t hivogatnék bash-ból, és IPC-t használnék.
-
bambano
titán
válasz
szoke12
#1360
üzenetére
alapvetően sehogy, mert amit másik futtatási környezet futtat, azt nem látja.
megkerülni úgy lehet, hogy a deklarációkat egy fájlba teszed, és ponttal beolvasod oda, ahol szintén szükséges.
tehát így:#! /bin/bash
. valtozok.sh
másik megoldás, hogy a változót exportálod a futtatási környezetbe, így a belőle indított al-shellek is látni fogják. a bash manual olvasgatása javasolt az export utasítás környékén. de ez még mindig nem teljes megoldás.
-
-
válasz
szoke12
#1270
üzenetére
Az ==, amit hasznalsz, az igazan stringek osszehasonlitasara van, neked meg szamokat kell osszehasonlitanod, arra mas operatorok vannak, az egyenloseg:
if [ $NUM -eq 10 ] ; then
A komplett sor: -lt, -le, -eq, -ge, -gt (kisebb, kisebbegyenlo, egyenlo, nagyobbegyenlo, nagyobb)
vagyis ami neked kell az az, hogy
if [ $NUM -le 10 ] ; then
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

