shell 脚本中$$,$#,$?分别代表什么意思?

作者&投稿:权菡 (若有异议请与网页底部的电邮联系)
Linux shell 脚本中, $@ 和$# 分别是什么意思?~

直接看示例:
[root@localhost xly]# cat t.sh
#!/bin/bash
echo $#
echo $@
[root@localhost xly]# sh t.sh
0
[root@localhost xly]# sh t.sh a b c
3
a b c
说明:
$@表示所有参数
$#表示所有参数的个数

Linux shell 脚本中, $@ 和$# 分别是:
$@:表示所有脚本参数的内容
$#:表示返回所有脚本参数的个数。
示例:编写如下shell脚本,保存为test.sh
#!/bin/sh
echo "number:$#"
echo "argume:$@"
执行脚本:
./test.sh first_arg second_arg

说明:给脚本提供了两个参数,所以$#输出的结果是2,$@代表了参数的内容!

给你个全的,你在Linux环境下多试下就明白了:
$0 这个程式的执行名字
$n 这个程式的第n个参数值,n=1..9
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
$@ 跟$*类似,但是可以当作数组用

$$ : 当前 shell 的 PID
$#: shell的输入参数的个数, 比方说 a.sh aaa mmm nnn , 则在 a.sh 里,$# 为 3
$?: 上一条命令的返回值,比方说在脚本里
....
grep xxx a.txt
echo $?
...

就会 echo 上一条命令 grep 命令的返回值。

请仔细查阅linux下shell的特殊字符解释


奉节县13179307657: shell 脚本中$$,$#,$?分别代表什么意思? -
望钧悉美: 给你个全的,你在Linux环境下多试下就明白了:$0 这个程式的执行名字$n 这个程式的第n个参数值,n=1..9$* 这个程式的所有参数,此选项参数可超过9个.$# 这个程式的参数个数$$ 这个程式的PID(脚本运行的当前进程ID号)$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)$? 执行上一个指令的返回值 (显示最后命令的退出状态.0表示没有错误,其他任何值表明有错误)$- 显示shell使用的当前选项,与set命令功能相同$@ 跟$*类似,但是可以当作数组用

奉节县13179307657: shell脚本中的$*,$@和$#分别是什么意思? -
望钧悉美: 举例说:脚本名称叫test.sh 入参三个: 1 2 3 运行test.sh 1 2 3后$*为"1 2 3"(一起被引号包住)$@为"1" "2" "3"(分别被包住)$#为3(参数数量)

奉节县13179307657: linux shell脚本中 $? 和 $@是什么意思??? -
望钧悉美: $@ :以("$1""$2"...)的形式保存所有输入的命令行参数;$? :上一条命令的返回结果.

奉节县13179307657: shell中的$#和${img##.}是什么意思 -
望钧悉美: $#表示shell脚本的参数个数.比如:在执行脚本时带两个参数 ./test.sh a b 那么在脚本中通过 $# 获取到的参数个数就是2.${img##.} 是bash特有的字符串处理方式,不过写法貌似有点问题吧?我觉得应该是 ${img##*.}, 即,将img变量(估计是个文件全路径)去掉.号前面所有部分(包括点号),得到文件后缀名.比如:img=/home/pic/abc.jpg echo ${img##*.} 就会打印 jpg

奉节县13179307657: shell脚本中最后的$*是什么意思呢 -
望钧悉美: $*是传递给脚本(或方法)的所有参数 $# 是传给脚本的参数个数 $@ 是传给脚本的所有参数的列表 $0 是脚本(或方法)本身的名字 $1是传递给该shell脚本(或方法)的第一个参数 $2是传递给该shell脚本(或方法)的第二个参数 还有其他内容请看参考资料

奉节县13179307657: shell 中$符号有哪几种用法 -
望钧悉美: 1)脚本中 脚本中#之后的为注释 #在第一列的话,则整行为注释. #不在第一列的话,#左面的是命令,#的右面(后面)为注释2)在命令行中,或者在讲解命令的例子中,如# vi test,#有可能是系统提示符,可以忽略它.知道vi tst.txt就行了!

奉节县13179307657: shell脚本中的美元符号什么意思 -
望钧悉美: linux shell脚本中的美元符号$,是作为shell中特殊变量使用的,具体含义:$0 shell的命令本身(包括完整路径) $1到$9 数字表示shell 的第几个参数 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数 $$ 脚本运行的ID号 $! 后台运行的最后一个进程的ID号 $@ 与$*相同. $- 显示shell使用的当前选项. $? 显示最后命令的执行状况.0表示没有错误.

奉节县13179307657: shell脚本中的$#表示什么意思呢?# /bin/shif [ $# - ne "1" ]thenecho "usage:$0 进程个数"exit 1fi如上例,$#表示什么呢?我知道$0,$1,$2在awk中的意... -
望钧悉美:[答案] shell脚本执行过程中 把第一个字符串作为脚本名称(或程序名称)处理,第二、第三.都作为参数处理.shell会将这些参数默认的赋给变量 1 2 3 .所以当你echo $1 $2的时候看到的就是参数变量的值. 解答一下$#的问题:这里$#是计算输入参数的个数 ...

奉节县13179307657: linux shell $# 什么意思 -
望钧悉美: $#是传给脚本的参数个数,比如您的脚本名字叫test,脚本如下:#!/bin/shecho "$#"则执行该脚本,后跟a,b,c三个参数,结果输出为3$./test a b c3

奉节县13179307657: 在linux中,使用 echo $ 其中$是什么意思? -
望钧悉美: 当前shell的进程号. 你可以使用ps -A 看你自己shell 的pid. 是内置变量.$#传递到脚本的参数个数 $*以一个单字符串显示所有向脚本传递的参数,与位置变量不同,此选项参数可超过9个 $$脚本运行的当前进程ID号 $!后台运行的最后一个进...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网