I wrote this simple script it works too but shows an error
clear
echo Enter 1st number
read n1
echo Enter 2nd number
read n2
echo MUlti is `expr $n1 \* $n2`;
if [$n1 -lt $n2]
then
echo $n1 'is bigger than' $n2
else
echo $n2 'is bigger than' $n1
fi
output
Enter 1st number
5
Enter 2nd number
10
MUlti is 50
./script.sh: line 7: [5: command not found
10 is bigger than 5
The
[
is a command builtin, also known astest
, and as all commands requires at least a space to separate it from other words in the command.[
is also available as a regular command in/usr/bin/[
or/usr/bin/test
.The presence of a final
]
is instead a requirement of the command, when invoked as[
, and the spaces around it are required as for every parameter of a command.That said, in bash you should use the command
[[
, that has some avantages over[
, like for example supporting&&
and||
for logical operations, beside-a
and-o
.Moreover, to do integer arithmetic operations and comparison between integers it is better to use arithmetic expansions
$((math operations))
, and the corresponding command((math ops))
.With these observations, your script could be:
Remember to make it executable (
chmod +x my-script
), then execute it with./my-script
.For bash conditional if statements, you need to have a whitespace right before and right after your condition. Yours should look like:
instead of
Goofy, but that's the bash shell.