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
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.
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
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.
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
https://www.tutorialspoint.com/python/python_command_line_arguments.htm (https://www.tutorialspoint.com/python/python_command_line_arguments.htm)
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
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.