官术网_书友最值得收藏!

Using functions and parameters

So far in the book, we have mentioned that function is a reserved word and only used in Bash scripts that are in a single procedure, but what is a function?

To illustrate what a function is, first we need to define what a function is—a function is a self-contained section of code that performs a single task. However, a function performing a task may also execute many subtasks in order to complete its main task.

For example, you could have a function called file_creator that performs the following tasks:

  1. Check to see whether a file exists.
  2. If the file exists, truncate it. Otherwise, create a new one.
  3. Apply the correct permissions. 

A function can also be passed parameters. Parameters are like variables that can be set outside of a function and then used within the function itself. This is really useful because we can create segments of code that perform generic tasks that are reusable by other scripts or even within loops themselves. You may also have local variables that are not accessible outside of a function and for usage only within the function itself. So what does a function look like?

#!/bin/bash
function my_function() {
local PARAM_1="$1"
local PARAM_2="$2"
local PARAM_3="$3"
echo "${PARAM_1} ${PARAM_2} ${PARAM_3}"
}
my_function "a" "b" "c"

As we can see in the simple script, there is a function declared as my_function using the function reserved word. The content of the function is contained within the squiggly brackets {} and introduces three new concepts:

  • Parameters are referred to systematically like this: $1 for parameter 1, $2 for parameter 2, $3 for parameter 3, and so on
  • The local keyword refers to the fact that variables declared with this keyword remain accessible only within this function
  • We can call functions merely by name and use parameters simply by adding them, as in the preceding example

In the next section, we'll dive into a more realistic example that should drive the point home a bit more: functions are helpful everyday and make functionality from any section easily reusable where appropriate.

主站蜘蛛池模板: 宜黄县| 广安市| 宝丰县| 星子县| 桦甸市| 博湖县| 宜都市| 襄樊市| 慈利县| 枣强县| 桑植县| 工布江达县| 潼关县| 乌拉特前旗| 筠连县| 黔江区| 福安市| 梁山县| 光山县| 岳阳市| 利辛县| 汝州市| 乌什县| 泽普县| 宝兴县| 独山县| 若尔盖县| 金沙县| 小金县| 老河口市| 崇明县| 怀宁县| 盘锦市| 呼图壁县| 黄冈市| 南通市| 阳江市| 化德县| 拜泉县| 横山县| 德兴市|