Skip to content

Instantly share code, notes, and snippets.

@seddi
Created December 25, 2010 19:11
Show Gist options
  • Select an option

  • Save seddi/755005 to your computer and use it in GitHub Desktop.

Select an option

Save seddi/755005 to your computer and use it in GitHub Desktop.
/etc/passwd dosyasindan okuyarak istenilen bazi alanlari listelemek icin bir betik
#!/bin/bash
alani_goster() {
! [ $# -eq 1 ] && echo "simdilik alan adi tek olamali :) " && exit 1
alan=$1
ifs_save="$IFS"
case "$alan" in
"user")
while read line; do
IFS=":"
set $line
IFS="$ifs_save"
echo "$alan ==>> $1"
done </etc/passwd
;;
"group")
while read line; do
IFS=":"
set $line
IFS="$ifs_save"
echo "$alan ==>> $5"
done </etc/passwd
;;
"passwd")
while read line; do
IFS=":"
set $line
IFS="$ifs_save"
echo "$alan ==>> $2"
done </etc/passwd
;;
"kabuk")
while read line; do
IFS=":"
set $line
IFS="$ifs_save"
echo "$alan ==>> $7"
done </etc/passwd
;;
*)
echo "kullanim : ./file_name <alan_adi> "
echo "alan_adi =>> [ user ], [ passwd ], [ group ], [ kabuk ] "
echo "ornek kullanim : ./secilen_alani_goster.sh user "
exit 2 ;;
esac
}
alani_goster $1
@gdemir

gdemir commented Dec 26, 2010

Copy link
Copy Markdown

@sedat`` kod'da çok tekrar var.

DRY(Don't repeat yourself)

Şu şekilde hatasız olarak çalışacaktır.

 #!/bin/bash
 ifs_save="$IFS"
 alan=$1
 while read line; do
      IFS=":"
      set $line
      IFS="$ifs_save"

      case "$alan" in 
           "user") echo "$alan ==>> $1"
          "group") echo "$alan ==>> $5"
          "passwd") echo "$alan ==>> $2"
          *) echo "$alan ==>> $7"
      esac
 done </etc/passwd

@seddi

seddi commented Dec 26, 2010

Copy link
Copy Markdown
Author

@gokhan farkındamısın ne kadar takıp edıyorsun bılmıyorum ama oncekı gıstımde https://gist.github.com/748928 zaten ole yazmısım fakat onerdıgın cozumdekı yanlısı sen farketmemıssın!! onerdıgın cozumu zaten yaptım fakat degıstırme nedenım whıle ıcıne koydugun case ıfadelerınde dongu sırasında sureklı bır kontrol cabası ıcındesın yanı esas tekrardan kastın gorunus ıse tmm tekrar var ama dedgın cozumde ıse kod calısırken aynı seylerı bos yere tekrar edıyor sureklı aynı kontrolu yapıyor bence daha dıkkatlı olmalısın bu konuda ;)

@semihozkoroglu

Copy link
Copy Markdown

Şimdi bende bişey söylemek istiyorum Don't repeat yourself durumu kodun yazılısındaki kod tekrarımı yoksa işlem sırasındaki kod tekrarı mı?
Yani şunu söylemek istiyorum @gökhan senin yazdıgın kodda hangi satırın hangi sutununu bastıracagımız kararına her defasında bakıyoruz ancak @sedat ' ın yazdıgı kodda tamam fazla yazımlar var ama çalışma açısından bakarsan satırdaki sütünu bulup ondan sonra sadece o sütün için işlem yapıyor o yüzden Don't repeat yourself durumunu daha iyi anlamalıyız bence, kendi açımdan söylüyorum bunu çünkü bende kavrayamadım bu durumu..

@gdemir

gdemir commented Dec 26, 2010

Copy link
Copy Markdown

En başta bu kadar düzensiz yazmasak,
daha güzel olur okunmuyor :-(
Şimdi gel gelelim, bizim kod kısaltma hikayesine;
örneğin senin yavaş çalışır dediğin benim kodda, kişi dediki
"Efendim ben hem user hem de grubları yanyana görmek istiyorum."
dediğinde, caselerde bir işler döndürdükten sonra; sende oldu mu 2 while döngüsü ?
Demek ki benim dediğim kodda az bir hız zahiyatı olmasına rağmen,denetim kolaylığı oluyor.
Ve diğer koda göre 2 kat daha hızlı çalışıyor.

@seddi

seddi commented Dec 26, 2010

Copy link
Copy Markdown
Author

soledim ya iste ´https://gist.github.com/748928 ´ burada zaten bu dedıgın kod var fakat hocanın duzelt demesi uzerine duzelttim @gdemir

@gdemir

gdemir commented Dec 26, 2010

Copy link
Copy Markdown

Amaç tek hedefe yönelikse, tabiki bu kod doğru birşey demiyorum, ama;
değilse bu dediğim yolda gidilmeli bence.
Ayrıca bunlar clone edilebiliyor.gistpaste'de sorun var ama manualde olur.
git clone git://gist.github.com/755005.git
ayrı ayrı gistlerde oldugundan, hocanın yorumunu göremediğimden söylüyorum.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment