Прочитайте, что для сравнения строк внутри ifмы должны использовать двойные квадратные скобки. В некоторых книгах говорится, что сравнение может быть сделано =. Но это работает с ==тоже.
#!/bin/bash
a="hello"
b="world"
if [[ $a == $b ]];then
echo "equal"
fi
Есть ли разница между =и ==в сравнении?
==, почему вы должны использовать =(равенство) с [и ==(сопоставление с образцом с семантикой, поддерживающей цитирование) с [[. См help testпротив help [[.
[ foo == foo ] && echo fooбезусловно, печатает foo, указывая, что ==работает с [. Тем не менее, если под «это означает» вы подразумеваете «был предназначен для использования с», то у меня меньше возражений.
[[Тот факт, что bash воспринимает это как удобство, не означает, что он рекомендуется - если вы все-таки отказываетесь от переносимости, просто используйте во-первых, у которого значительно более детальное понимание токенизации, разбиения слов и т. Д.
=для[.==для[[.