float Математика точки в сценарии оболочки Unix и присвоение ее переменной

Операторы -eqи -neявляются арифметическими операторами для сравнения числовых данных.

Здесь вам нужны ==и!=:

if [[ "${fin[2]}" == 'OK' ]] &&
   [[ "${fin[7]}" == 'NA' ]]; then

и

elif [[ "${fin[2]}" != 'OK' ]] &&
     [[ "${fin[7]}" == 'NA' ]] &&
     (( currDate2 < expectedFinishTimes )); then

(например ).


Также будьте осторожны с цитированием иecho:

echo "<tr id="green">"

лучше писать как

echo '<tr id="green">'

Первый произведет

<tr id=green>

а второй произведет

<tr id="green">
1
28.02.2018, 22:59
1 ответ
c=$( printf '%s - %s\n' "$a" "$b" | bc )

o, para los perezosos,

c=$( echo "$a - $b" | bc )

o, para el usuario perezoso bash,

c=$( bc <<<"$a - $b" )

El problema con tu código es que

c=$((a-b)) | bc

no funcionará. Solo puede (útilmente )canalizar cosas que producen salida, y c=$((a-b))es una asignación que 1 )fallará si $ao $bson ​​números de punto flotante (con un error de sintaxis )y 2 )no produce salida. Además, la salida debc(nada )no se asignará a cya que no forma parte de la asignación en absoluto.

3
27.01.2020, 23:32

Теги

Похожие вопросы