Linux--Shell中变量 $# $0 $1 $2 $@ $* $$ $? 的含义
Linux中变量 $# $0 $1 $2 $@ $* $$ $? 的含义.$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
@ 与 * 的区别:
相同点:都是引用所有参数
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数(分别存储在1 2 3)
"*" 等价于“1 2 3"(传递了一个参数);
“@" 等价于 "1""1""2" "$3"(传递了三个参数)。
例子一:
变量的简单认识。
# cat dels.sh
#!/bin/bash
##dels.sh
echo "number:$#"
echo "scname:$0"
echo "first :$1"
echo "second:$2"
echo "argume:$@"
echo "show parm list:$*"
echo "show process id:$$"
echo "show precomm stat: $?"
# bash dels.sha b c
number:3
scname:dels.sh
first :a
second:b
argume:a b c
show parm list:a b c
show process id:19815
show precomm stat: 0
例子二:
@ 与 * 的区别
# cat dels.sh
#!/bin/bash
echo "argume\$@:$@"
echo"-----------------------------1"
for key in $@
do
echo "for_in-\$@:"$key
done
echo"-----------------------------2"
for key in "$@"
do
echo 'for_in-"$@":'$key
done
echo"-----------------------------3"
for key2 in $*
do
echo 'for_in-$*:'$key2
done
echo"-----------------------------4"
for key2 in "$*"
do
echo 'for_in-"$*":'$key2
done
echo"-----------------------------5"
# bash dels.sha b c
argume$@:a b c
-----------------------------1
for_in-$@:a
for_in-$@:b
for_in-$@:c
-----------------------------2
for_in-"$@":a
for_in-"$@":b
for_in-"$@":c
-----------------------------3
for_in-$*:a
for_in-$*:b
for_in-$*:c
-----------------------------4
for_in-"$*":a b c
-----------------------------5
页:
[1]