Citaat:
Oorspronkelijk geplaatst door fpmurphy
Humm, ik heb gekeken naar deze shell script een paar keer en krabde mijn hoofd.
U stelt de variabele 'q' in een string
maar je verwacht te kunnen aftrekken een nummer uit het
Hoe is dit bedoeld om te werken?
|
Hoi,
Ik revisited het ook en krabde mijn hoofd zo goed! Er is een fout in het script ... als
firstslice is groter dan
lastslice het zal niet werken. Dus ik heb geprobeerd een andere boeg met behulp van awk.
als een herinnering, dit is wat ik wil doen, ik heb een lijst van bestanden:
Code:
sl40_z11.70.txt
sl41_z11.40.txt
sl42_z11.10.txt
sl43_z10.80.txt
Ik wil lus door deze bestanden te houden hun etikettering intact. Bijvoorbeeld, ik wil doen in een script
Code:
cp sl40_z11.70.txt sl40_z11.70.dat
cp sl41_z11.40.txt sl41_z11.40.dat
cp sl42_z11.10.txt sl42_z11.10.dat
cp sl43_z10.80.txt sl43_z10.80.dat
Ik heb honderden van deze bestanden en ik nodig voor het verrichten van andere, niet-triviale operaties op hen. Probleem is bash niet herkent drijvende nummers dus ik kan niet lus over hen.
mijn nieuwe script:
Code:
#!/bin/sh
#
echo -n "....enter first slice number....."; read firstslice
echo -n "....enter last slice number....."; read lastslice
#
echo -n "....enter first Z-coordinate position....."; read zpos
#sliceDiff=0.3
#
loopNumber=$[($lastslice - $firstslice)+1]
echo "loopNumber is $loopNumber"
echo firstslice no. is $firstslice
for ((k=$firstslice;k<=$lastslice; k++)); do
r=$[k]
echo "$firstslice $r $zpos" | awk '{print $3-(($2-$1)*0.3)}'
#echo "$firstslice $r $zpos" | awk '{print $i}' sl$2_z[$3-(($2-$1)*0.3)].txt > xxxx.dat
done
Dus loopt dit script en het binnenkomen op prompts "40", "43", "11,70"
lussen over de 4-bestanden netjes. Maar ik weet niet hoe op te nemen van de output in de laatste regel van het script zodat awk erkent de bestandsnaam.
Alle hulp wordt zeer gewaardeerd.
Sante