16.shell脚本编程(1)
2016-01-06 21:35
337 查看
这些内容来自《linux命令行与shell脚本编程大全》,做一下笔记。
bash脚本编程第一行需要写上一行特别的注释,让bash执行环境能够识别
假如在你写好名叫a.sh的脚本后,此时你是无法用a.sh直接执行的,因为这个脚本对当前用户来说没有执行权限,所以你要修改权限u+x,此外这个脚本并没有在PATH环境下,你需要讲当前目录增加到PATH环境中。那么有没有简单的处理方法。当然是有的
这样就能直接执行。
写一个脚本叫a.sh
用户变量:定义变量用来零时存储数据的。
有时候我们需要将命令输出的内容保存到变量中,那么我们需要使用反引号。跟~同一个键。
> 正确覆盖写到文件
>> 正确追加写到文件
2> 错误覆盖写文件
2>> 错误追加写文件
&> 不论正确错误都覆盖写
&>> 不论错误还是正确都追加写
输入重定向
< 将一个文件读入,并进行处理
除了使用expr以外还可以使用$[ 1 + 5 ]
脚本退出,通过$?可以获得脚本最后一个命令的执行状况
0 命令成功结束
1 通用未知错误
2 误用shell命令
126 命令不可执行
127 没有找到命令
128 无效退出参数
128+x Linux信号x的严重错误
130 命令通过Ctrl+c终止
255 退出状态码越界
exit指定脚本中最后一个命令的退出码状态。
bash脚本编程第一行需要写上一行特别的注释,让bash执行环境能够识别
#!/bin/bash
假如在你写好名叫a.sh的脚本后,此时你是无法用a.sh直接执行的,因为这个脚本对当前用户来说没有执行权限,所以你要修改权限u+x,此外这个脚本并没有在PATH环境下,你需要讲当前目录增加到PATH环境中。那么有没有简单的处理方法。当然是有的
xin@xin ~/test $ bash 1.sh
这样就能直接执行。
写一个脚本叫a.sh
xin@xin ~/Test $ cat a.sh #!/bin/bash echo "当前时间: " date xin@xin ~/Test $ bash a.sh 当前时间: 2016年 01月 07日 星期四 10:17:56 CST在我们习惯中我们会想让数据在同一行显示
xin@xin ~/Test $ cat a.sh #!/bin/bash echo -n "当前时间: " date xin@xin ~/Test $ bash a.sh 当前时间: 2016年 01月 07日 星期四 10:35:47 CST环境变量:用来记录特定系统信息。可以使用set来查看所有的。
用户变量:定义变量用来零时存储数据的。
有时候我们需要将命令输出的内容保存到变量中,那么我们需要使用反引号。跟~同一个键。
xin@xin ~/Test $ testing=`date` xin@xin ~/Test $ echo $testing 2016年 01月 07日 星期四 10:42:52 CST重定向输入输出。
> 正确覆盖写到文件
>> 正确追加写到文件
2> 错误覆盖写文件
2>> 错误追加写文件
&> 不论正确错误都覆盖写
&>> 不论错误还是正确都追加写
输入重定向
< 将一个文件读入,并进行处理
xin@xin ~/Test $ wc < date 8 38 352<< 内联输入重定向,允许你从命令行里输入
xin@xin ~/Test $ tr 'a-z' 'A-Z' >> c.txt << EOF > 1234 > 5678 > aaaa > bbbb > EOF xin@xin ~/Test $ cat c.txt 1234 5678 AAAA BBBB| 将一个命令的输出作为另一个命令的输入
xin@xin ~/Test $ date | wc 1 6 43expr 允许在命令行上仔细整数运算,注意使用空格
xin@xin ~/Test $ expr 1 + 5 6 xin@xin ~/Test $ expr 1+5 1+5 xin@xin ~/Test $ expr 1 * 5 expr: syntax error xin@xin ~/Test $ expr 1 \* 5 5
除了使用expr以外还可以使用$[ 1 + 5 ]
xin@xin ~/Test $ var=$[1 + 5] xin@xin ~/Test $ var2=$[$var * 2] xin@xin ~/Test $ echo $var2 12浮动运算的解决
xin@xin ~/Test $ bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 3.44/5 0 scale=4 3.44/5 .6880 quit xin@xin ~/Test $在脚本中使用浮点运算
xin@xin ~/Test $ bash a.sh 最后运算得到值为.6880 xin@xin ~/Test $ cat a.sh #!/bin/bash var=`echo "scale=4; 3.44/5" | bc` echo "最后运算得到值为$var"</span></span>
xin@xin ~/Test $ cat b.sh #!/bin/bash var1=10.46 var2=43.67 var3=33.2 var4=71 var5=`bc << EOF scale=4 a1= ( $var1 * $var2 ) b1= ( $var3 * $var4 ) a1 + b1 EOF` echo 最后结果$var5 xin@xin ~/Test $ bash b.sh 最后结果2813.9882
脚本退出,通过$?可以获得脚本最后一个命令的执行状况
0 命令成功结束
1 通用未知错误
2 误用shell命令
126 命令不可执行
127 没有找到命令
128 无效退出参数
128+x Linux信号x的严重错误
130 命令通过Ctrl+c终止
255 退出状态码越界
exit指定脚本中最后一个命令的退出码状态。
相关文章推荐
- 字符展开详解
- nohup-真正的Shell后台运行
- 一个ShellExecute的超全说明(www.phidels.com这个网站很多内容)
- 【2-1】HDFS简介与HDFS Shell
- shell三剑客之一AWK的使用
- 如何用shell脚本编译java工程
- 如何用shell脚本编译java工程
- Linux下shell的学习--之杂七杂八
- Xshell无法连接VMware中的Linux Mint解决方法
- shell中读取配置文件之eval
- LINUX 命令行变成-bash-4.2$
- awk手册
- 有奖试读—Windows PowerShell实战指南(第2版)
- 有奖试读—Windows PowerShell实战指南(第2版)
- 有奖试读—Windows PowerShell实战指南(第2版)
- su: warning: cannot change directory to /home/mysql: 权限不够 -bash: /home/mysql/.ba
- Shell(一):功能、配置和插件(附iTerm 2(for mac) && Oh My Zsh教程)
- linux shell用法(6)-- sed - i 命令
- shell记录
- shell下任务切换命令