Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
来源:互联网 发布:酷家乐装修设计软件 编辑:程序博客网 时间:2024/06/05 00:42
转:http://c.biancheng.net/cpp/view/2739.html
命令行参数
运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。
请看下面的脚本:
#!/bin/bashecho "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 AliFile Name : ./test.shFirst Parameter : ZaraSecond Parameter : AliQuoted Values: Zara AliQuoted Values: Zara AliTotal Number of Parameters : 2
$* 和 $@ 的区别
$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。
但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。
下面的例子可以清楚的看到 $* 和 $@ 的区别:
#!/bin/bashecho "\$*=" $*echo "\"\$*\"=" "$*"echo "\$@=" $@echo "\"\$@\"=" "$@"echo "print each param from \$*"for var in $*do echo "$var"doneecho "print each param from \$@"for var in $@do echo "$var"doneecho "print each param from \"\$*\""for var in "$*"do echo "$var"doneecho "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 dprint each param from $*abcdprint each param from $@abcdprint each param from "$*"a b c dprint each param from "$@"abcd
退出状态
$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。
退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。
不过,也有一些命令返回其他值,表示不同类型的错误。
下面例子中,命令成功执行:
$./test.sh Zara AliFile Name : ./test.shFirst Parameter : ZaraSecond Parameter : AliQuoted Values: Zara AliQuoted Values: Zara AliTotal Number of Parameters : 2$echo $?0$
$? 也可以表示函数的返回值
阅读全文
0 0
- [shell]Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- shell特殊变量$0,$#,$@,$*,$?,$$和命令行参数
- [Shell]特殊变量$0$#$*$@$?和命令行参数
- Shell特殊变量:$0, $#, $*, $@, $?, $$和命令行参数
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- 六、Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Spark中的一些概念
- Android Studio 配置 FindBugs
- Aeroplane chess hdu 4405
- <Shader>phong 光照模型和 blinn phong 模式
- ReactNative项目 Python批量打包 (对美团第三种批量打包区分渠道的方法封装)
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- log4j+logback+slf4j+commons-loggin的关系
- Kotlin 踩坑日记(四) Maven Google 仓库 gradle 使用
- Git 基本操作
- 继孔子之后又一大儒朱熹后裔在松滋
- 中国第一台量子计算机诞生 中国军工尖端技术取得重大突破
- 内存异常
- 解决CentOS7 无法启动mysql 的解决办法
- 写给Android App开发人员看的Android底层知识(7)