shell 5参数

本文介绍了shell脚本传递参数的相关知识,包括$n、$#、$$等参数的含义,还对比了$@与$*的相同点和不同点,相同点是都引用参数,不同点在双引号中体现,$*会将所有参数作为一个字符串。同时提醒若参数含空格需用引号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shell传递参数

我们可以在执行shell脚本时,向脚本传递参数。

$n n代表数字。0表示执行的脚本名称,1表示第1个参数,2是第2个参数
$# 传递到脚本的参数个数
$$ 脚本运行的当前进程的ID号
$! 后台运行的最后一个进程的ID号
$? 显示上个命令的执行情况。0表示没有错误,其他任何值表明有错误。
$@ 一个单字符显示所有向脚本传递的参数,需要加引号
$* 以一个单字符显示所有向脚本传递的参数
$- 显示shell使用的当前选项,与set命令功能相同

#shell
#!/bin/sh
echo "shell脚本名称:" $0
echo "第一个参数:" $1
echo "第二个参数:" $2
echo "脚本的个数:" $#
echo "当前进程ID:" $$
echo "后台运行的最后一个进程ID:" $!
echo "上个命令的执行结果:" $?
echo "参数作为字符串显示*:" $* "$*"
echo "参数作为字符串显示@:" $@ "$@"

shell脚本名称: 829test.sh
第一个参数: 3
第二个参数: 4
脚本的个数: 2
当前进程ID: 6673
后台运行的最后一个进程ID:
上个命令的执行结果: 0
参数作为字符串显示
: 3 4 3 4
参数作为字符串显示@: 3 4 3 4*

$@与$区别
相同点:都是引用参数
不同点:只有在双引号中体现出来。$
会将所有的参数作为一个字符串

#shell
#!/bin/sh
echo "--\$@演示--"
for i in $@;do
    echo $i
done
echo "--\$*演示--"
for i in $*;do
    echo $i
done
echo "--\"\$@\"演示--"
for i in "$@";do
    echo $i
done
echo "--\"\$*\"演示--"
for i in "$*";do
    echo $i
done

--$@演示--
3
4
--$
演示--
3
4
--"$@"演示--
3
4
--"$"演示--
3 4

注意

shell脚本中传递的参数如果包含空格,应该对该参数使用单引号或者双引号。

#shell
#!/bin/sh
echo "传入一个参数‘Tom Cat’"
echo "第一个参数:$1"
echo "参数个数$#"

csjdeMacBook-Air:shell csj$ sh 829test.sh Tom Cat
传入一个参数‘Tom Cat’
第一个参数:Tom
参数个数2
csjdeMacBook-Air:shell csj$ sh 829test.sh "Tom Cat"
传入一个参数‘Tom Cat’
第一个参数:Tom Cat
参数个数1

转载于:https://www.cnblogs.com/csj2018/p/9552774.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值