Linux下Shell编程之必背必记(一)
来源:互联网 发布:windows xp下 arp命令 编辑:程序博客网 时间:2024/05/21 06:02
1.Shell常用特殊变量含义解释
$# 传入Shell脚本的参数个数
$? 最后运行命令的结束码(0表示:成功执行 非0表示:执行过程中出现异常或非正常退出)
状态码:
0 命令成功结束
1 通用未知错误
2 误用shell命令
126 命令不可执行
127 没找到命令
128 无效退出参数
128+x Linux信号x的严重错误
130 Linux信号2的严重错误,即命令通过SIGINT(Ctrl+C)终止
255 退出状态码越界
$$ Shell本身的PID(即ProcessID)
$! Shell最后运行的后台ProcessID
$* 所有的参数列表
$@ 所有的参数列表 没看出和$*有什么区别,都是以"$1" "$2" ... "$n"的形式输出所有参数
$0 Shell本身的文件名
$- 使用Set命令设定的Flag一览
$1 - $n 添加到Shell的各个参数值,$1是第一个参数、$2是第二个参数...
2.Shell数值、字符串、文件的比较
数值比较:
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
以上长和test命令一起使用,如:
#!/bin/bash
value1=8
if [$value1 -gt 6]
then
echo "$value1 is greater than 6"
fi
字符串比较:
= 等于
!= 不等于
< 小于
> 大于
-n str 检查str的长度是否非0
-z str 检查str的长度是否为0
文件比较:
-d file 检查file是否存在并是一个目录
-e file 检查file是否存在
-f file 检查file是否存在并是一个文件
-r file 检查file是否存在并可读
-s file 检查file是否存在并非空
-w file 检查file是否存在并可写
-x file 检查file是否存在并可执行
-O file 检查file是否存在并属当前用户所有
-G file 检查file是否存在并且默认组与当前用户相同
file1 -nt file2 检查file1是否比file2新
file1 -ot file2 检查file1是否比file2旧
3.Bash Shell提供了两项可在if - then语句中使用的高级特性
3.1 用于数学表达式的双括号
双括号命令符号:
val++ 后增
val-- 后减
++val 先增
--val 先减
! 逻辑求反
~ 位求反
** 幂运算
<< 左位移
>>右位移
& 位布尔和
| 位布尔或
&& 逻辑和
|| 逻辑或
#!/bin/bash
value1=8
if (( $value1 ** 2 > 60 )))
then
(( value2=$value ** 2))
echo " the square of $value1 is $value2 !"
fi
3.2 用于高级字符串处理功能的双方括号
#!/bin/bash
if [[ $username == bi* ]]
then
echo "hi $username !"
else
echo "$username is not existed !"
fi
双方括号提供了test命令未提供的另一个特性,即模式匹配。
双等号将右边的字符串 bi* 视为一个模式,并应用模式匹配规则。上面示例表示双方括号命令$username环境变量进行匹配,看它是否以字母r开头,
如果是,执行then后代码块,否则执行else后代码块。
参考资料 《Linux命令行与shell脚本编程大全(第三版)》
阅读全文
1 0
- Linux下Shell编程之必背必记(一)
- linux下的shell编程(一)
- linux下shell编程笔记(一)
- Linux下Shell编程(一)
- Linux学习之shell编程一
- Linux 下的 shell 编程之变量
- Linux 下的 shell 编程之 输入输出
- linux 下shell脚本编程之变量
- linux 下shell编程之for循环
- Linux Shell编程一
- 《unix/linux编程实践教程》之Shell编程一
- Linux下Shell编程
- linux下shell编程
- Linux下Shell编程
- Linux下shell编程
- Linux 下shell编程
- Linux下Shell编程
- Linux 下shell编程
- Android初学者仿QQ聊天软件APP (一) 登录界面
- Akka并发编程——第七节:Actor模型(六)
- 单例模式和静态类
- 苏嵌点滴(二)
- Android数据存储之数据库(SQLite和litepal)
- Linux下Shell编程之必背必记(一)
- ThreadLocal的用法和内存泄漏
- ActiveForm beforeSubmit用法
- 斐波那契序列
- 排列组合(2)
- U盘安装CentOS7最正确姿势
- file_get_contents("php://input") php://input 输入流
- C语言的函数概述——参考C语言入门
- 网易实习被虐史