basename 获取文件名称
参数
- 文件路径
- suffix 后缀,指定要删除的后缀
script_name=$(basename $0 .sh)
echo $script_name
dirname 获取文件所在的文件夹
参数
- 文件路径
dirname /Users/jc/test.sh
==> 返回 /Users/jc
函数的定义
# 第一种写法
function_name()
{
code...
}
# 第二种写法,加function关键字
function function_name()
{
code...
}
函数的调用
调用函数并且传入参数
function_name param1 param2 ...
函数的参数
1. 位置参数
参数 | 说明 |
---|---|
$# |
代表传入的参数个数 |
$* |
所有参数 |
$@ |
所有参数 |
$0 |
脚本名称 |
$n |
$1 表示传入的第一个参数,$2 表示传入的第一个参数,以此类推。 |
2. 位移参数
用户可以使用shift命令来使得脚本的所有的位置参数向左移动一个位置
function show(){
while (($# > 0))
do
echo "$1"
shift
done
}
show a b c d e
3. 通过getopts接收参数
getopts是bash内置的一个命令,通过该命令,用户可以获取函数的选项以及参数的值,语法如下:
getopts optstring [args]
optstring表示选项名称列表,如果某个选项名称后面跟随着一个冒号,则表示用户可以为该选项提供参数值,没有冒号就表示不用传入参数值。参数的值保存到一个名称为$OPTARG
的系统变量中。
"a:b:c" 就表示,a 和 b 选项需要传入参数值,c选项不需要传入值
实例
function show(){
while getopts "a:b:c" args
do
case "$args" in
a)
echo "hello my name is $OPTARG"
;;
b)
echo "hello my name is $OPTARG"
;;
c)
echo "hello world"
;;
?)
echo "unkown argument"
eixt
;;
esac
done
}
# 调用函数
show -a Jack -b Jun -c
全局变量和局部变量
函数内部的变量,如果没有使用
local
关键字进行修饰,都算全局变量。
调用别的文件里面的函数
有一个文件叫test.sh,里面有一个函数叫show
#! /bin/bash
# 导入文件
. test.sh
# 使用函数
show