Total newbie scripting question
- 
					
					
					
					
 I'm using the Omega to illuminate LEDs, and for this purpose software PWM works great. For example, the command-line command fast-gpio pwm 14 200 25 lights a (red) LED connected to GPIO 14 at 25% duty cycle with a frequency of 200 Hz. I have created a simple sh script ("red.sh) containing just a single line: fast-gpio pwm 14 200 $1 so I can just type red 25 at the command line to obtain the same results. Everything is working fine, but I'd like to do some range checking on the argument $1 to ensure that it is between 0 and 100 (duty cycle between 0% and 100%). I've tried things like if [$1 < 0] then echo "value is under-range" 
 else if [$1 > 100] then echo "value is over-range"
 else fast-gpio pwm 14 200 $1but I keep getting errors. How do I accomplish this simple task? I've tried looking at various tutorials on "sh scripting" but nothing is working so far. I admit to being a total newbie at Linux and its variants, so I don't really know where to turn. I believe that the Omega is running a version of OpenWRT, but I haven't been able to uncover much about scripting in OpenWRT. Help!! 
 
- 
					
					
					
					
 @Jeff-Verive sh is really picky about the syntax, try the following: if [ $1 < 0 ] then echo "value is under-range" elif [ $1 > 100 ] then echo "value is over-range" else fast-gpio pwm 14 200 $1 fiA few things to note: - For the square brackets in your if statements, there needs to be a space after [and a space before]
- To create an else ifyou need to use the keywordelif
- The thenafter aniforelifneeds to either be on the next line or have a semi-colon after the]
- The whole thing has to be closed with a fi
 
 
- For the square brackets in your if statements, there needs to be a space after 
- 
					
					
					
					
 @Jeff-Verive see my request about starting with markdown ... 
 https://community.onion.io/topic/707/markdown-how-to-start-with-it
 this might help you to display correct code in the forum.
 
- 
					
					
					
					
 Thanks a bunch! Your code almost worked, but the syntax that actually worked (to control an LED connected to GPIO 14) was as follows: #!/bin/sh if [ $1 -gt "100" ] then echo "value is over-range" echo "use a whole number from 0 to 100" elif [ $1 -lt "0" ] then echo "value is under-range" echo "use a whole number from 0 to 100" elif [ $1 -eq "0" ] then fast-gpio pwm 14 200 101 else fast-gpio pwm 14 200 $1 fiIndeed, sh is extremely picky about syntax, but once I saw some working examples, I was able to develop working code. By the way, this code is stored as file called red, so the way it is used is as follows: red valuewhere value is the duty-cycle percentage requested, from 0 for minimum brightness (OFF) to 100 (fully on). For example, to set the duty cycle to 40% we enter red 40which lights up the LED using a 50% duty cycle. One peculiar aspect of PWM using fast-gpio is that at 0% duty-cycle (which should theoretically have no ON time) the output still contains pulses (probably to satisfy servos), so an LED still illuminates - though dimly. Using a duty-cycle value greater than 100: fast-gpio pwm 14 200 101actually produces 0% duty cycle. Since this is not intuitive for the average intended user of my code, I substitute 101 for 0 in the code. Cheating? Maybe, but the user is none the wiser! 
 
