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