Bash script yardimi

Başlatan newbi, 12 Ağustos 2017 - 21:47:26

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

newbi

bi bash scripti yazmak istiyorum az cok bilgim var fakat suan gerekli is icin yeterli degil.
betik belirtilen .txt dosyasindaki her satiri sirayla alip ayni dizindeki python programina arguman olarak koymasi gerek.
örnek:
python.py liste sabit-parametre

python.py 1 a
python.py 2 a
...... diye tek tek belirtilen dosyadaki her satiri ilk parametre olarak yerlestirmeli

umarim anlatabilmisimdir

mhmtkrktr

Anlatamadın. ;-) En azından ben anlamadım ;-)
Konuyu daha ayrıntılı şekilde örneklersen, oydu buyduyla uğraşmayıp doğrudan sonuca gidebiliriz.

newbi

#2
1 adet txt dosyasi ve her satirda bir metin var .ben bash scriptinin bu metin dosyasindaki her satiri sirayla alip python programi calistirirken parametre olarak vermek istiyorum.mesela konsola
./script.sh yazdigimda script ayni dizindeki metin dosyasindan her satiri sirayla alip python programina parametre olarak yansitacak

#!/bin/bash
readarray a < ip.txt
for i in "${array[a]}"
do
echo $i
python up.py $i sabit_parametre
done


./script.sh: line 3: 192.168.1.1
: syntax error: invalid arithmetic operator (error token is ".168.1.1
")

bu sekilde hata veriyor ustteki kod
su sekilde denedim ama calismadi istedigim ip.txt deki her satiri sirayla islemesi. up.py ve ip.txt dosyasida ayni dizinde ve sabit_parametre hep ayni kalmali sadece python dosyasina verilen ilk parametre dehisecek

mhmtkrktr

Parametreden kasıt nedir? Değişken gibi birşey mi?
Yapmak istediğin şöyle birşey mi?
Farklı değerlerin tutulduğu bir text dosyası var, örn:
11
12
13
14
15

py dilinde bir uygulama var, örn:
#!/usr/bin/python

counter = 10
reader   = 100
writer = 111

Bash script kullanarak, py dosyası her çalıştığında counter değişkeninin sırası ile text içeriğinde ki değerleri almasını istiyorsun.
Örneğin. py birinci çalışmasında
#!/usr/bin/python

counter = 11
reader   = 100
writer = 111

ikinci çalışmasında
#!/usr/bin/python

counter = 12
reader   = 100
writer = 111

gibi.
Bu şekilde ise kolay ama orada text içeriğine bakarak python bunu zaten kendisi yapabiliyor olması gerekir. Tek ihtiyaç son hangi değeri çalıştırdığı bilgisini tutacak bir log dosyası tutmak olur. Doğru yorumlamışsam python konusunda bilgisi olan bilgilendirir yine ama farklı bir durum varsa geri bildirim yaptığında buna göre komutları paylaşabilirim.

newbi

evet mesela aynen netcat taki gibi

netcat -lvp 192.168.1.1 bu sekilde bir parametre sabit diger ip adresinide sirayla text dosyasindan alicak.

peki scripti calistirdigimda cikan uyari neden cikiyor


newbi

arkadaslar sorun python kodunda degil.python koduna parametreyi zaten bash scriptine

python up.py $i sabit-parametre

olarak yazdim suan listeden veriyi alirken hata var.

bash scriptini halletim fakat bu seferde

invalid aritmetic operator hatasi aliyorum

ironic

Alıntı yapılan: newbi - 13 Ağustos 2017 - 15:57:17
1 adet txt dosyasi ve her satirda bir metin var .ben bash scriptinin bu metin dosyasindaki her satiri sirayla alip python programi calistirirken parametre olarak vermek istiyorum.mesela konsola
./script.sh yazdigimda script ayni dizindeki metin dosyasindan her satiri sirayla alip python programina parametre olarak yansitacak

#!/bin/bash
readarray a < ip.txt
for i in "${array[a]}"
do
echo $i
python up.py $i sabit_parametre
done


./script.sh: line 3: 192.168.1.1
: syntax error: invalid arithmetic operator (error token is ".168.1.1
")

bu sekilde hata veriyor ustteki kod
su sekilde denedim ama calismadi istedigim ip.txt deki her satiri sirayla islemesi. up.py ve ip.txt dosyasida ayni dizinde ve sabit_parametre hep ayni kalmali sadece python dosyasina verilen ilk parametre dehisecek

readarray a <ip.txt
sabit_param='....' # sabit parametreyi buraya yaz.
for i in ${a[@]}
do
  echo $i
  python up.py $i ${sabit_param}
done

şeklinde dene. liste adını a olarak belirlemişsin ama array olarak çalıştırmaya çalışıyorsun.