linux shell 编程 10 $0 $1 $2 $# $* $@ $! $$ $?
博客专区 > QH_C 的博客 > 博客详情
linux shell 编程 10 $0 $1 $2 $# $* $@ $! $$ $?
QH_C 发表于2年前
linux shell 编程 10 $0 $1 $2 $# $* $@ $! $$ $?
  • 发表于 2年前
  • 阅读 32
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$! 是最后运行的后台Process的PID
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误


脚本:

#!/bin/bash
# args  test
echo "title: $0"
echo "total args: $#"
echo "first args: $1"
echo "second args: $2"
echo "all args: $@"
echo "all args: $*"
echo "currnet pid:$$"
echo "status: $?"

结果:

[root@localhost src]# sh java18 1 2 3
title: java18
total args: 3
first args: 1
second args: 2
all args: 1 2 3
all args: 1 2 3
currnet pid:4005
status: 0

-----------------------------------------------------------------------------------------------------

区别:"@"和 "*"

  • 相同点:都是引用所有参数

  • 不同点:只有在双引号中体现出来,假如脚本中运行时写入了三个参数(1 2 3)则 “*”等价于“123”(相当于传递了一个参数)而“@” 等价于传递了“1” “2” “3” (传递了三个参数)

3"

脚本:

#!/bin/bash
# total args 
a=$#
for((i=0;i<$a;i++))
do
echo "$i"
done

echo "---- $ @----"
for var in $@
do
echo "$var"
done

echo "----$ *----"
for va in $*
do
echo "$va"
done

echo "---- " $ @ "----"
for var1 in "$@"
do
echo "$var1"
done

echo "---"  "----"
for va1 in "$*"
do
echo "$va1"
done


运行结果:

[root@localhost src]# sh java19 1 2 3
0
1
2
---- $ @----
1
2
3
----$ *----
1
2
3
----  $ @ ----
1
2
3
--- ----
1 2 3


共有 人打赏支持
粉丝 2
博文 30
码字总数 69153
×
QH_C
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: