LINUX.ORG.RU

bash. чудеса с if else


0

1

привет.

имеем такой код:

#!/bin/bash

dwarf=no
x32=yes
x64=yes

[[ $dwarf==yes && $x32==no ]] && {
	var1=1
} || {
	var1=0
}

[[ $dwarf==no && $x64==no ]] && {
	var2=1
} || {
	var2=0
}

echo "var1: $var1"
echo "var2: $var2"

[[ $var1 == 1 || $var2 == 1 ]] && {
	echo 1
} || {
	echo 2
}
который дает такой вывод:
var1: 1
var2: 1
1
если я все еще в своем уме, то вывод должен быть таким:
var1: 0
var2: 0
2
где затупил?

благодарю.

★★★

#!/bin/bash

dwarf=no
x32=yes
x64=yes

[[ $dwarf == yes && $x32 == no ]] && {
	var1=1
} || {
	var1=0
}

[[ $dwarf == no && $x64 == no ]] && {
	var2=1
} || {
	var2=0
}

echo "var1: $var1"
echo "var2: $var2"

[[ $var1 == 1 || $var2 == 1 ]] && {
	echo 1
} || {
	echo 2
}
$ bash ./if.sh 
var1: 0
var2: 0
2
cx ★★
()

Белые пробелики вокруг знака равенства
По скрипту плывут,
В шелле эти чертовы белые пробелики
Синтаксис несут.

P.S.Если бы попробовал запустить в zsh, то там твой скрипт вообще не парсится, а исправленный вариант cx — парсится, и работает он как надо (что в баше, что в zsh).

proud_anon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.