У меня есть следующий код bash
, и он отлично работает, когда я меняю значение 'ca
':
ca=4
if [ -f $(($(($ca > 2)) && $(($ca < 1)))) ] ; then
echo "I can't reach here"
else
if [ -f $(($(($ca == 4)) && ($((4 == $ca))))) ] ; then
echo "It is 4"
else
echo "Else works wonders"
fi
fi
, но если я удаляю "-f
" из if
- заявление, все выводит неправильно.Насколько я искал, -f
для файлов, но я не понимаю, как это работает в приведенном выше случае.Кроме того, любые предложения об альтернативных способах написания этих сложных выражений в if
-составлениях в bash также будут полезны.
Примечание. Приведенный выше код выглядит странно, поскольку он не написан от руки и преобразован из JS с использованием транспилятора , над которым я работаю.Ниже приведен исходный код JS:
let ca = 4;
if (ca > 2 && ca<1) {
console.log("I can't reach here");
} else if(ca == 4 && (4 == ca)){
console.log("It is 4")
}else {
console.log("Else works wonders");
}
Дальнейшее редактирование / решение:
Теперь я могу правильно перенести вышеприведенные и другие выражения, используя Diego Torres Milano * Рекомендация 1023 * .
Ниже приведен пример ввода и вывода транспилятора, чтобы любой, кто сталкивался с подобными проблемами, мог получить некоторые идеи.
Вход JS / TS:
let ca = 3;
if (ca > 2 && ca<4) {
console.log("3!!");
} else if(ca == 4 && (4 == ca)){
console.log("It is 4")
}else {
console.log("Else works wonders");
}
var cb = true
let cc :any = false //"any" is used for calming the TS compiler
if(cb==cc){
console.log("I will never be logged")
}else{
console.log("Expect me!")
}
if(!cc){
console.log("Negation?")
}
Выход Bash:
ca=3
if (( $(($(($ca > 2)) && $(($ca < 4)))) )) ; then
echo "3!!"
else
if (( $(($(($ca == 4)) && ($((4 == $ca))))) )) ; then
echo "It is 4"
else
echo "Else works wonders"
fi
fi
cb=1
cc=0
if (( $(($cb == $cc)) )) ; then
echo "I will never be logged"
else
echo "Expect me!"
fi
if (( ! $cc )) ; then
echo "Negation?"
fi