xuol001 发表于 2018-8-27 06:05:47

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]
查看完整版本: Linux--Shell中变量 $# $0 $1 $2 $@ $* $$ $? 的含义