您的位置:首页 > 运维架构 > Shell

shell 学习(1) 执行,管道,重定向,逻辑分隔,变量,引号,运算

2014-04-09 21:35 661 查看
1. 执行 shell 脚本

方法一: chmod +x uad.sh# 需要含有 x 权限
./uad.sh
// 不需要考虑 x 权限
方法二:sh uad.sh#用sh解释器解析
方法三: source uad.sh#用当前默认解释器解析,后两者不需要加课执行权限

2. 管道

格式:命令1| 命令2
例如:find . -name "*" | wc -l

3. 重定向

重定向输入:<从指定文件读取数据
重定向输出:>, >>
输入结果覆盖,追加到指定的文件
标准错误输出:2>, 2>>
混合输出:&>, &>>
标准输出和错误信息覆盖,追加

4. 逻辑分隔

逻辑或: 命令1||命令2(只要一个执行)
逻辑连接符: 命令1;命令2(依次执行前后的命令)

5. 变量

引用变量:$变量名,${变量名} (避免变量连接起来)
变量:
系统赋值:USER, LONGNAME, HOME, SHELL
用户操作: PATH, LANG, CLASSPATH...
env: 查看环境变量
其他特殊变量:
$?: 前一条命令的状态值,0为正常,非0为异常
$0: 脚本自身的程序名
$1-$9: 第1到第9个位置参数
$*: 命令行的所有位置参数的内容
$#: 命令行的位置参数个数

6. 引号

单引号:禁止引用,转义
反撇号`(键盘上数字1前面的那个符号)或$():以命令输出进行替换

7 整数运算

格式: expr 数值1 操作符 数值2
例如: expr 45 \* 2145*21
x=45; y=46; expr $x - $y
使用 $[] 表达式,算数替换
格式:$[数值1 操作符 数值2]
例如:x=45; y=46; echo $[x-y];
变量的递增处理
格式: let 变量名++, let 变量名--
let x+=2;
使用随机数
RANDOM 变量 # 范围为[0, 32767]
echo $[RANDOM%100]
生成数字序列
格式:seq 首数 末尾数
seq 首数 增量 末尾数
seq 3 5-> 3 4 5
seq 3 2 10 -> 3 5 7 9
将表达式给 bc 命令处理
echo "45.67-21.05" | bc# 结果:24.62
echo "scale=4;10/3" | bc# 结果:3.3333 #scale=n约束小数位
逻辑与: 命令1&&命令2(同时执行成功)
定义及赋值:变量名=变量值
双引号:允许引用,\转义
例如:echo `who` = echo $(who) = who #命令
使用expr命令,计算表达式
例如:seq 3->
1 2 3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐