Судя по исходному коду, числа в квадратных скобках являются априорным предполагаемым показателем успешности для данного предиката. Таким образом, первое [0.4]
оценка вероятности что -type d
оценит к истинному. Это может использоваться для определения порядка, в котором оценены условия предиката. Можно найти больше в findutils-4.4.2/find/parser.c
, findutils-4.4.2/find/tree.c
и findutils-4.4.2/find/pred.c
.
Сначала необходимо избавиться от пробелов для присвоения, например,
sum='expr $num1 + $num2'
затем необходимо измениться '
к a `
или еще лучше к $()
:
sum=$(expr "$num1" + "$num2")
вместо использования expr
можно также сделать вычисление непосредственно в оболочке:
sum=$((num1 + num2))
Вы, вероятно, неправильно читали обратные галочки как одинарные кавычки в строке:
sum = 'expr $num1 + $num2'
Посмотрите Wiki Greg на использовании $(...)
вместо этого.
Это работает как ожидалось:
sum=$(expr "$num1" + "$num2")
Также примечание там не является никакими разрывами вокруг, равняется знаку (переменное присвоение).
echo "addition of two number"
echo "enter a number"
read a
echo "enter a number"
read b
c=`expr $a + $b`
echo $c
$( ... )
вместо этого в оболочках. Кроме того, проблема состоит в том, что OP использует пробелы, где они не были должны.
– vonbrand
09.03.2013, 15:00
#!/bin/bash
function add()
{
sum=`expr $a + $b`
echo "Sum is :$sum";
}
echo "Enter the value of a";
read a
echo "Enter the valure of b";
read b
add
echo "enter first no :"; read a
echo "enter second no :"; read b
echo "sum = `expr $a + $b`"
expr
- внешняя программа, используемая Оболочка Борна (т.е. sh). В оболочке Bourne изначально не было механизма для выполнения простых арифметических операций.Он использует внешнюю программу expr
с помощью обратной кавычки.
Обратный апостроф ( `) на самом деле называется подстановкой команд. Подстановка команд - это механизм, с помощью которого оболочка выполняет заданный набор команд, а затем заменяет их вывод на место команд.
sum=`expr $num1 + $num2`
В bash (bourne again shell) он имеет следующий синтаксис, он не будет использовать внешнюю программу expr
.
sum=$((num1+num2))
, если мы хотим использовать внешнюю программу expr
. у нас есть следующий синтаксис:
sum=$(expr $num1 + $num2)
Если вы используете bash, вы можете просто сделать что-то вроде этого:
sum=$((num1+num2))
expr
вместо$((...))
требование состоит в том, чтобы быть портативным к классической Оболочке Bourne, затем это - хорошая идея избежать$(...)
также. – Alan Curry 08.08.2012, 07:55$()
? Насколько я знаю, что это требуется posix, например, все posix совместимые оболочки должны поддерживать$()
– Ulrich Dangel 08.08.2012, 08:27$(…)
, но это имеет о вымершем (возможно, кто-то где-нибудь все еще работает/bin/sh
на Солярисе). – Gilles 'SO- stop being evil' 09.08.2012, 01:33$(…)
– или по крайней мере, не все версии. – Scott 12.01.2013, 00:32