Вы забыли начальную наклонную черту прежде bin/python
. Это означает /usr/bin/prj-python
теперь точки к /usr/bin/bin/python
. Что хотели бы Вы это указывать на точно?
Стандартная арифметика оболочки только позволяет целочисленные арифметические операции. Это не включает **
для возведения в степень, которое удар имеет как расширение.
Целочисленное возведение в степень достаточно легко реализовать как функция оболочки (хотя Вы скоро столкнетесь с циклическим возвратом).
pow () {
set $1 $2 1
while [ $2 -gt 0 ]; do
set $1 $(($2-1)) $(($1*$3))
done
echo $3
}
Как в стороне, почему использование expr
здесь? Арифметика Shell может сделать дополнение.
Я думаю, что Вам не повезло, как **
оператор экспоненты не является стандартным для/bin/sh. Можно использовать bc
, хотя: echo "$y ^ $x" | bc
.
Оболочка POSIX, по-видимому, не имеет оператора возведения в степень. Можно прокрутить собственное:
pow() {
local x y res i
x=$1
y=$2
res=1
i=1
while [ $i -le $y ]; do
res=$(( res * x ))
i=$(( i + 1 ))
done
echo $res
}
x=1
while [ $x -le 10 ]; do
y=1
while [ $y -le 10 ]; do
echo "$(pow $y $x) \c"
y=$(( y + 1 ))
done
echo
x=$(( x + 1 ))
done
echo -n
. Если Вы хотите быть портативными, использоватьprintf %s 'print\this!exactly+with%no$newline*at;the&end'
. – Gilles 'SO- stop being evil' 24.02.2011, 00:14bc
программа, если Вы хотите наполнить кроме основного, добавляет/умножает/вычитает/делит. Пример:echo $(echo '2^3' | bc)
(использованиеksh
здесь), – Nitrodist 24.02.2011, 00:16