nullITeye - 凯时娱乐

nullITeye

2019-01-12 09:46:30 | 作者: 新曦 | 标签: | 浏览: 918

原文地址:http://c.biancheng.net/cpp/view/2739.html




前面现已讲到,变量名只能包括数字、字母和下划线,由于某些包括其他字符的变量有特别意义,这样的变量被称为特别变量。

例如,$ 表明当时Shell进程的ID,即pid,看下面的代码:
$echo $$
运转成果
29949

特别变量列表
变量 意义
$0 当时脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表明第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的一切参数。
$@ 传递给脚本或函数的一切参数。被双引号(" ")包括时,与 $* 稍有不同,下面将会讲到。
$? 上个指令的退出状况,或函数的回来值。
$$ 当时Shell进程ID。关于 Shell 脚本,便是这些脚本地点的进程ID。
指令行参数

运转脚本时传递给脚本的参数称为指令行参数。指令行参数用 $n 表明,例如,$1 表明第一个参数,$2 表明第二个参数,顺次类推。

请看下面的脚本:
#!/bin/bash
echo "File Name: $0"
echo "First Parameter : $1"
echo "First Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
运转成果:
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$* 和 $@ 的差异

$* 和 $@ 都表明传递给函数或脚本的一切参数,不被双引号(" ")包括时,都以"$1" "$2" … "$n" 的方式输出一切参数。

可是当它们被双引号(" ")包括时,"$*" 会将一切的参数作为一个全体,以"$1 $2 … $n"的方式输出一切参数;"$@" 会将各个参数分隔,以"$1" "$2" … "$n" 的方式输出一切参数。

下面的比如能够清楚的看到 $* 和 $@ 的差异:
#!/bin/bash
echo "\$*=" $*
echo "\"\$*\"=" "$*"
echo "\$@=" $@
echo "\"\$@\"=" "$@"
echo "print each param from \$*"
for var in $*
do
  echo "$var"
done
echo "print each param from \$@"
for var in $@
do
  echo "$var"
done
echo "print each param from \"\$*\""
for var in "$*"
do
  echo "$var"
done
echo "print each param from \"\$@\""
for var in "$@"
do
  echo "$var"
done
履行 ./test.sh "a" "b" "c" "d",看到下面的成果:
$*=  a b c d
"$*"= a b c d
$@=  a b c d
"$@"= a b c d
print each param from $*
a
b
c
d
print each param from $@
a
b
c
d
print each param from "$*"
a b c d
print each param from "$@"
a
b
c
d
退出状况

$? 能够获取上一个指令的退出状况。所谓退出状况,便是上一个指令履行后的回来成果。

退出状况是一个数字,一般情况下,大部分指令履行成功会回来 0,失利回来 1。

不过,也有一些指令回来其他值,表明不同类型的过错。

下面比如中,指令成功履行:
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$

$? 也能够表明函数的回来值,后续将会解说。
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯时娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章