shell笔记(二):位置参数(类似于java或c的形参)及特殊变量($0、$#、$*、$@、$?、$$)

Shell 特殊变量及其含义
变量含义
$0当前脚本的文件名。
$n(n≥1)传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2。
$#传递给脚本或函数的参数个数。
$*传递给脚本或函数的所有参数。
$@传递给脚本或函数的所有参数。当被双引号" "包含时,$@ 表示所有值的集合(多个), $* 表示所有值拼接以后的结果(一个)
$?上个命令的退出状态,或函数的返回值。
$$当前 Shell 进程 ID。对于 Shell脚本,就是这些脚本所在的进程 ID。

位置参数


 

脚本文件传入位置参数

  • 创建demo.sh脚本文件
#!/bin/bash
echo "name: ${1}"
echo "age: ${2}"
  • 执行test.sh并传入参数
[root@centos shell]# ./demo.sh zhangshan 21
name:zhangshan
age:21
[root@centos shell]# 

直接创建函数并传入位置参数

  • 创建fun1函数
[root@centos shell]# function fun1(){
> name=${1}
> age=${2}
> }
[root@centos shell]# 
  • 调用函数并传入参数

注意:如果对应位置的参数没有穿的话就为空;

[root@centos shell]# fun1 zhangshan 21
name=zhangshan
age=21
[root@centos shell]# 

 


特殊变量


脚本文件使用特殊变量(函数同理)

  • 创建demo.sh脚本文件
#!/bin/bash
echo "第一个参数:${1}"
echo "第二个参数:${2}"
echo "参数个数:$#"
echo "所有参数:$*"
echo "所有参数(@符):$@"
echo "shell脚本名称:$0"
echo "shell脚本进程ID:$$"
  • 调用shell脚本文件
[root@centos shell]# ./demo.sh zhangshan 21
第一个参数:zhangshan
第二个参数:21
参数个数:2
所有参数:zhangshan 21
所有参数(@符):zhangshan 21
shell脚本名称:./demo.sh
shell脚本进程ID:7674
  •  $*和$@的区别

首先都表示传递给函数或脚本的所有参数。

不同的是当$@被双引号包围时,$@相当于参数集合,$*则还是所有参数拼接成一个值

使用for循环可以直观的看出来

  • 编写shell脚本(函数同理)
#!/bin/bash
echo "echo打印\"\$\*\":"${*}""
echo "循环\"\$\*\""
for param in "$*"
do
        echo $param
done
echo "echo打印\"\$\@\":"${@}""
echo "循环\"\$\@\""
for param in "$@"
do
        echo $param
done

  • 结果
[root@centos shell]# sh demo.sh 第一个 第二个 第三个
echo打印"$\*":第一个 第二个 第三个
循环"$\*"
第一个 第二个 第三个
echo打印"$\@":第一个 第二个 第三个
循环"$\@"
第一个
第二个
第三个

从运行结果可以发现,对于"$*",只循环了 1 次,因为它只有 1 分数据;对于"$@",循环了 3 次,因为它有 3 份数据。

获得方法返回值

  • 编写shell脚本
#!/bin/bash

function add(){
    return `expr ${1} + ${2}`
}
add ${1} ${2}
echo $?
  • 结果
[root@centos shell]# ./demo.sh 1 2
3
[root@centos shell]# ./demo.sh 22 33
55
[root@centos shell]#

输入1和2放回3,输入22和33返回55,获取成功

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值