shell脚本学习-2

文章目录

  • 一、shell参数传递
  • 二、shell中的特殊变量
  • 三、shell中的函数
  • 四、shell函数中的参数

一、shell参数传递

运行 Shell 脚本文件时我们可以给它传递一些参数,这些参数在脚本文件内部可以使用$n的形式来接收,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。

#!/bin/bash

echo "参数1 = $1"
echo "参数2 = $2"

xhh@cluo:~/study/shell$ ./shell-5.sh abcd 12346
参数1 = abcd
参数2 = 12346

二、shell中的特殊变量

变量 含义
$0 当前脚本的文件名
$n(n≥1) 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。当被双引号" "包含时,$@ 与 $* 稍有不同,我们将在《Shell ∗ 和 *和 @的区别》一节中详细讲解。
$? 上个命令的退出状态,或函数的返回值,我们将在《Shell $?》一节中详细讲解。
$$ 当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID
    #!/bin/bash
    echo "Process ID: $$"
    echo "File Name: $0"
    echo "First Parameter : $1"
    echo "Second Parameter : $2"
    echo "All parameters 1: $@"
    echo "All parameters 2: $*"
    echo "Total: $#"
xhh@cluo:~/study/shell$ ./shell-6.sh  adcd 12346
Process ID: 52421
File Name: ./shell-6.sh
First Parameter : adcd
Second Parameter : 12346
All parameters 1: adcd 12346
All parameters 2: adcd 12346
Total: 2

三、shell中的函数

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。

#!/bin/bash

add(){
    echo "输入第一个数字: "
    read a
    echo "输入第二个数字: "
    read b
    echo "两个数字分别为 $a 和 $b !"
    return $(($a+$b))
}
add
echo "输入的两个数字之和为 $? !"

shell脚本学习-2_第1张图片

这里需要注意的是
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
$? 仅对其上一条指令负责,一旦函数返回后其返回值没有立即保存入参数,那么其返回值将不再能通过 $? 获得。

比如

#!/bin/bash

function demoFun1(){
    echo "这是我的第一个 shell 函数!"
    return `expr 1 + 1`
}

demoFun1
echo $?
echo $?

执行结果

这是我的第一个 shell 函数!
2
0

可以看到第二个 $? 并没有正确的返回出函数的执行结果,而是返回的一个0.证明函数没有错误。

四、shell函数中的参数

#!/bin/bash

add(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
add 1 2 3 4 5 6 7 8 9 34 73

打印结果
shell脚本学习-2_第2张图片
注意, 10 不能获取第十个参数,获取第十个参数需要 10 不能获取第十个参数,获取第十个参数需要 10不能获取第十个参数,获取第十个参数需要{10}。当n>=10时,需要使用${n}来获取参数。

如果使用 $10来表示 会识别为 $1 + 字符 0 所以这里显示为 10
比如我这里修改下顺序

#!/bin/bash

add(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $21 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
add 1 3 2 5 4 6 7 8 9 34 73

shell脚本学习-2_第3张图片

你可能感兴趣的:(linux,学习,linux)