Вычислить область с чтением и функцией

Эта команда sed вернет что-либо (.*) из начала строки (^) до и включит первое появление false, исключая остальные (.*$). [!d0 ]

sed -r 's/^(.*\<false\>).*$/\1/'
1
задан 10 April 2018 в 05:25

6 ответов

Функции в bash не имеют именованных параметров. Вы не можете сделать:

area (foo) { ...
function area (foo) { ...

Вы можете сделать:

area () {
    local radius a   # set a local variable that does not leak outside the function
    radius=$1   # Save the first parameter to local variable
    a=$(( 3 * radius * 2 ))
    echo "$a"
}

И затем:

echo "$(area "$REPLY")"  # use $REPLY as the first argument

Поскольку return устанавливает статус выхода функция, тогда как $(area) использует выход функции. Это разные.

Кроме того, хотя bash не поддерживает арифметику с плавающей запятой, она поддерживает возведение в степень:

$ bash -c 'echo $((3 * 3 ** 2))'
27
3
ответ дан 22 May 2018 в 11:31

Функции в bash не имеют именованных параметров. Вы не можете сделать:

area (foo) { ... function area (foo) { ...

Вы можете сделать:

area () { local radius a # set a local variable that does not leak outside the function radius=$1 # Save the first parameter to local variable a=$(( 3 * radius * 2 )) echo "$a" }

И затем:

echo "$(area "$REPLY")" # use $REPLY as the first argument

Поскольку return устанавливает статус выхода функция, тогда как $(area) использует выход функции. Это разные.

Кроме того, хотя bash не поддерживает арифметику с плавающей запятой, она поддерживает возведение в степень:

$ bash -c 'echo $((3 * 3 ** 2))' 27
3
ответ дан 17 July 2018 в 17:09

Функции в bash не имеют именованных параметров. Вы не можете сделать:

area (foo) { ... function area (foo) { ...

Вы можете сделать:

area () { local radius a # set a local variable that does not leak outside the function radius=$1 # Save the first parameter to local variable a=$(( 3 * radius * 2 )) echo "$a" }

И затем:

echo "$(area "$REPLY")" # use $REPLY as the first argument

Поскольку return устанавливает статус выхода функция, тогда как $(area) использует выход функции. Это разные.

Кроме того, хотя bash не поддерживает арифметику с плавающей запятой, она поддерживает возведение в степень:

$ bash -c 'echo $((3 * 3 ** 2))' 27
3
ответ дан 23 July 2018 в 18:00

Это быстрый скрипт, который принимает вход радиуса, а затем передает его функции area(), а затем возвращает возвращаемое значение.

#!/bin/bash
function area(){
    circ=$(echo "3.14 * $1^2" | bc)
}

#Read in radius
read -p "Enter a radius: "

#Send REPLY to function
area $REPLY

#Print output
echo "Area of a circle is $circ"

Пример:

terrance@terrance-ubuntu:~$ ./circ.bsh 
Enter a radius: 6
Area of a circle is 113.04
5
ответ дан 22 May 2018 в 11:31
  • 1
    Как инкапсулировать команду в область функций – JawSaw 10 April 2018 в 05:27

Это быстрый скрипт, который принимает вход радиуса, а затем передает его функции area(), а затем возвращает возвращаемое значение.

#!/bin/bash function area(){ circ=$(echo "3.14 * $1^2" | bc) } #Read in radius read -p "Enter a radius: " #Send REPLY to function area $REPLY #Print output echo "Area of a circle is $circ"

Пример:

terrance@terrance-ubuntu:~$ ./circ.bsh Enter a radius: 6 Area of a circle is 113.04
5
ответ дан 17 July 2018 в 17:09

Это быстрый скрипт, который принимает вход радиуса, а затем передает его функции area(), а затем возвращает возвращаемое значение.

#!/bin/bash function area(){ circ=$(echo "3.14 * $1^2" | bc) } #Read in radius read -p "Enter a radius: " #Send REPLY to function area $REPLY #Print output echo "Area of a circle is $circ"

Пример:

terrance@terrance-ubuntu:~$ ./circ.bsh Enter a radius: 6 Area of a circle is 113.04
5
ответ дан 23 July 2018 в 18:00
  • 1
    Как инкапсулировать команду в область функций – JawSaw 10 April 2018 в 05:27

Другие вопросы по тегам:

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