#!/bin/sh x="aardvark" y="zebra" if [ $x \< $y ] then echo "$x comes before $y in the dictionary" fi
First, make sure you wanted a lexicographical comparison (aka dictionary order), and not a numerical comparison.
Then to compare as string, you can use
expr and make sure that the strings are not interpreted numerically by adding some non-numerical data to them. Here, an apostrophe is prepended:
#!/bin/sh x="aardvark" y="zebra" if expr "'$x" \< "'$y" > /dev/null then echo "$x comes before $y in the dictionary" fi
test binary operators
\< are not part of POSIX and not guaranteed to be supported in scripts targeting
expr functionality is specified by POSIX.
If you know your
sh will be e.g.
dash, consider explicitly using
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.