I am trying to write my shell script thing.sh so that upon making it an executable and running it with the single letter “A” like so:
$ ./thing.sh A
I get the output
A
If argument 1 is not A, I want the output
Not A
Here is my code so far :
#!/bin/bash
if [ "$1" -eq "A"]
then echo "A"
else echo "Not A"
fi
which returns, no matter what I enter,
./thing.sh: line 3: [:missing `]'
Not A
I am trying what I hoped would check something with one or several letters and compare it against the letter A; could someone tell me what I am missing to get this to work? Thank you
What about the shorter :
?
And a beginner version (identical logic) :
Like Scott said, you have a syntax error (missing space).
explanations
[[ $1 == A ]]is executed, and then if its true,echo "A"is executed, and if it’s false,echo "not A"is executed, See http://mywiki.wooledge.org/BashGuide/TestsAndConditionals[[is a bash keyword similar to (but more powerful than) the[command. See http://mywiki.wooledge.org/BashFAQ/031 and http://mywiki.wooledge.org/BashGuide/TestsAndConditionals Unless you’re writing for POSIX sh, I recommend[[.