博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell 特殊变量
阅读量:6695 次
发布时间:2019-06-25

本文共 1310 字,大约阅读时间需要 4 分钟。

  1. 位置变量

$0  获取当前执行的shell脚本的文件名,如果执行脚本带路径那么就包括脚本路径

1
2
3
4
5
6
7
8
[root@XCN shell]
# sh n.sh 
n.sh
 
[root@XCN ~]
# sh /shell/n.sh 
/shell/n
.sh
 
[root@XCN shell]
# sh `pwd`/n.sh
/shell/n
.sh

$n  获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于0,大括号括起来${10}

1
2
3
4
5
6
7
8
9
脚本内容:
#!/bin/bash
echo 
$1
 
[root@XCN shell]
# sh p.sh xcn     #1个参数
xcn                                                                                                                  
  
[root@XCN shell]
# sh p.sh xcn cainiao    #2个参数输出的是第一个参数
xcn

$*   获取当前shell的所有参数,将所有的命令行参数视为单个字符串,相当于"$1$2$3".....注意与$#的区域

$#   获取当前执行的shell脚本后面接的参数的总个数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@XCN shell]
# cat p.sh 
echo 
$1
echo 
$
#
[root@XCN shell]
# sh p.sh {a..z}
a
26
 
企业应用:(控制用户参数输入的个数)当输入参数不等于2成立输出“muse two”,侧不成立会输出
"buchengli"
[root@XCN shell]
# cat 1p.sh 
#!/bin/bash
[ $
# -ne 2 ] && {
echo 
"muse two"
exit 
1           
#值1是退出后$? 的值
}
echo 
"buchengli"
[root@XCN shell]
# sh 1p.sh bai
muse two
[root@XCN shell]
# sh 1p.sh bai shu
buchengli
[root@XCN shell]
#

$@  这个程序的所有参数"$1" "$2" "$3" "...",这是将参数传递给其他程序的最佳方式,因为他会保留内嵌在每个参数里的任何空白。

$*和$@的区别例子

  • $*   将所有的命令行所有参数视为单个字符串,等同于"$1$2$3","$*"

  • $@  将命令行每个参数视为单独的字符串,等同于"$1" "$2" "$3".这是将参数传递给其他程序的最近方式,因为他会保留所有内嵌在每个参数里的任何空白。

注意:上述区别仅在于加双引号的时候,即"$*"与"$@"

shift  移动位置变量

2.进程状态变量

$$    获取当前shell的进程号

$!     执行上一个指令的PID

$?     获取执行上一个指令的返回值(0为成功,非零为失败)#这个变量很常用

$_      在此之前执行的命令或脚本的最后一个参数

本文转自 baishuchao 51CTO博客,原文链接:http://blog.51cto.com/baishuchao/1939495

转载地址:http://ecjoo.baihongyu.com/

你可能感兴趣的文章
不受控制的 position:fixed
查看>>
Light OJ 1406 Assassin`s Creed 状态压缩DP+强连通缩点+最小路径覆盖
查看>>
精简版—愤慨的小鸟
查看>>
Testing for SSL renegotiation
查看>>
牛客网Java刷题知识点之自动拆装箱
查看>>
一键部署Moodle开源课程管理系统
查看>>
SQL Server 数据库引擎怎样记录完整备份后修改过的数据
查看>>
[C#] .NET Core项目修改project.json来引用其他目录下的源码等文件的办法 & 解决多框架时 project.json 与 app.config冲突的问题...
查看>>
使用 Swift 3.0 操控日期
查看>>
使用InstallShield打包VS程序
查看>>
到底什么是nandflash,norflash,sdram,emmc,rom,ram【转】
查看>>
list集合去除重复对象的实现
查看>>
锚点 与 scrollIntoView()
查看>>
api日常总结:前端常用js函数和CSS常用技巧
查看>>
Redis在windows下安装过程
查看>>
线程管理-同步变量-同步变量体系
查看>>
plsql developer ini
查看>>
springboot整合mybatis(SSM开发环境搭建)
查看>>
Oracle性能优化之查询语句通用原则
查看>>
Eclipse集成ijkplayer并实现本地和网络视频播放等
查看>>