Shell中特殊的变量
$是会输出当前shell的pid
1 echo $$
变量 | 含义 |
---|---|
$0 | 当前脚本的文件名 |
$n | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是2。 |
$# | 传递给脚本或函数的参数个数。 |
$* | 传递给脚本或函数的所有参数。 |
$@ | 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 |
$? | 上个命令的退出状态,或函数的返回值。 |
$$ | 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 |
脚本文件varlist.sh
1 #!/bin/bash 2 3 echo "File name: $0" 4 echo "First parameter: $1" 5 echo "Second Parameter: $2" 6 echo "Quoted Values: $@" 7 echo "Quoted Values: $*" 8 echo "Total Number of Parameter : $#"
执行varlist.sh hello world结果输出如下:
$ sh ./varlist.sh hello world File name: ./varlist.sh First parameter: hello Second Parameter: world Quoted Values: hello world Quoted Values: hello world Total Number of Parameter : 2
@的区别:
当使用""是会出对于他们存在差异,"1 n"的形式输出所有参数;"1" "n" 的形式输出所有参数。 看下面的例子:
1 #!/bin/bash 2 #description: use variable 3 #Author: blacksonny 4 #Copyright (c) 5 #Script follows here: 6 7 echo "\$*=" $* 8 echo "\"\$*\"=" "$*" 9 10 echo "\$@=" $@ 11 echo "\"\$@\"=" "$@" 12 13 echo "print each param from \$*" 14 for var in $* 15 do 16 echo "$var" 17 done 18 19 echo "print each param from \$@" 20 for var in $@ 21 do 22 echo "$var" 23 done 24 25 echo "print each param from \"\$*\"" 26 for var in "$*" 27 do 28 echo "$var" 29 done 30 31 echo "print each param from \"\$@\"" 32 for var in "$@" 33 do 34 echo "$var" 35 done
输出结果:
1 $ sh ./varcompare.sh "a" "b" "c" "d" 2 $*= a b c d 3 "$*"= a b c d 4 $@= a b c d 5 "$@"= a b c d 6 print each param from $* 7 a 8 b 9 c 10 d 11 print each param from $@ 12 a 13 b 14 c 15 d 16 print each param from "$*" 17 a b c d 18 print each param from "$@" 19 a 20 b 21 c 22 d
退出状态:
$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。
退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了