<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<div dir="auto">Mijn Pc start op met de melding;" Kan toetsenbord niet vinden druk op f?. Maar er ge<span style="font-size: 12pt;">beurt niets. Wel dat ie gewoon verder gaat met opstarten van Linux. Wat kan ik doen om deze
</span><span style="font-size: 16px;">melding</span><span style="font-size: 12pt;"> te omzeilen. Bv dank.</span></div>
<div><br>
</div>
<div dir="auto" id="ms-outlook-mobile-signature"><a href="https://aka.ms/AAb9ysg">Outlook voor Android</a> downloaden</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Linux <linux-bounces@lists.nllgg.nl> on behalf of Paul Slootman via Linux <linux@lists.nllgg.nl><br>
<b>Sent:</b> Wednesday, September 28, 2022 11:41:07 AM<br>
<b>To:</b> linux@lists.nllgg.nl <linux@lists.nllgg.nl><br>
<b>Subject:</b> Re: [linux] Wat is er fout in dit bash-script?</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">On Wed 28 Sep 2022, Julien Michielsen via Linux wrote:<br>
> <br>
> Heb een eenvoudige forloop in een script gezet (verander filenaam DSC_0000001.JPG in
<br>
> dsc.i.jpg, maar bash geeft een foutmelding: <br>
> <br>
> <br>
> <br>
> /home/julien/com/forloop: line 8: syntax error near unexpected token `done' <br>
> /home/julien/com/forloop: line 8: `done' <br>
> <br>
> <br>
> <br>
> Het script: <br>
> <br>
> 1 #!bin/bash <br>
> 2 for i in {1..22} <br>
> 3 #DSC_0000001.html <br>
> 4 do <br>
> 5 echo DSC_390$i.JPG <br>
> 6 if(i LE 9) then mv ./DSC_000000$i.JPG ./dsc_0$i.jpg <br>
> 7 elif i GT 9 then mv ./DSC_00000$i.JPG ./dsc_$i.jpg <br>
> 8 done <br>
<br>
Na een "if" hoort die afgesloten te worden door een "fi"<br>
(net zoals een "for" afgesloten wordt door een "done".<br>
De "done" komt voordat een "fi" gezien is, dus wordt die "done" als<br>
onverwacht aangegeven.<br>
Eigenlijk zegt de foutmelding het al...<br>
<br>
Verder:<br>
<br>
if(i LE 9) then ...<br>
<br>
Tussen de haakjes hoort een commando te staan. "i LE 9" is geen<br>
commando.<br>
Haakjes zijn ook niet nodig tenzij je commando's wilt groeperen.<br>
Die gebruik je ook niet op regel 7, waarom dan wel op regel 6?<br>
<br>
Ik vermoed dat je bedoelde:<br>
<br>
if [ $i -le 9 ]; then ...<br>
<br>
of<br>
<br>
if [[ $i < 10 ]]; then ...<br>
<br>
De laatste met dubbele haken zijn extended tests, de enkele zijn de<br>
originele Bourne shell tests.<br>
<br>
Let ook op de ";" achter de test<br>
<br>
Dus:<br>
<br>
for i in {1..22}<br>
do<br>
echo DSC_390$i.JPG # waarom 390 en geen 000?<br>
if [ $i -le 9 ]<br>
then mv ./DSC_000000$i.JPG ./dsc_0$i.jpg <br>
elif [ $i -gt 9 ]<br>
then mv ./DSC_00000$i.JPG ./dsc_$i.jpg <br>
fi<br>
done <br>
<br>
<br>
Ik zou het zou doen overigens:<br>
<br>
for i in {1..22}; do<br>
x=$(printf '%02d' $i)<br>
mv ./DSC_00000$x ./dsc_$x.jpg<br>
done<br>
<br>
Of ('mmv' installeren):<br>
<br>
mmv 'DSC_00000??.JPG' 'dsc_#1#2.jpg'<br>
<br>
Maar de 1e optie is wel een leuke shell programmeer oefening :-)<br>
<br>
<br>
Paul<br>
</div>
</span></font></div>
</body>
</html>