Neste comando, se curl for bem-sucedido, então res será igual à saída de curl. Parece que '=' tem precedência maior que '||'.
res=$(curl -s "http://example.com")||true
Mas '||' deve ter precedência maior que '=' de acordo com este link: https://tldp.org/LDP/abs/html/opprecedence.html
Existem três usos distintos de
||
:Como operador em uma lista OR de comandos :
Como operador na construção de teste estendido (
[[ ... ]]
, mas não[ ... ]
outest ...
):Como operador em contextos aritméticos (
$(( ... ))
,(( ... ))
,let
expressões, etc.):Parece que a página ao qual você vincula fala sobre operadores nos contextos aritméticos. No entanto, o que você está usando é uma lista OR de comandos. Aqui
||
está um separador :Na sua forma mais simples, um pipeline pode ser apenas um simples comando . E
res=$(curl -s "http://example.com")
é um comando simples que resulta apenas em uma atribuição de variável. O||
separa esse pipeline do outro pipeline (true
).Se você quiser testar o que a página vinculada diz, use contextos aritméticos, como uma expressão aritmética: