一行可以输入多个命令,用分号分割
date;who
这就是写脚本的过程
如果将命令写在文件中,运行这个文本就是shell脚本编程
现在写一个shell脚本编程的小例子
新建一个文件touch test1
在文件中编写执行命令 vim test1
第一行 #!bin/bash :指定使用的shell
可以加备注以#号开头
接着写命令就好
#!bin/bash
#first test1
date
who
执行这个文件test1,显然不行
1:可以配置环境变量执行脚本
2:也可以使用./的形式执行脚本
测试以后者的形式
./test1
执行后发现没有执行权限:哈哈暴力的可以chmod 777 test1
再次执行 ./test1 成功
接下来考虑可能shell可能也有要显示的文本,要怎么展示呢,用echo
echo abc
echo "i’m girl"
echo ‘a says “shell is easy” .’
现在将文本信息加入到脚本
#!bin/bash结果:
#first test1
echo the time and date are:
date
who
shell脚本使用变量:
使用环境变量用$,shell看见$就会认为后面接的是变量
写个小例子:
#!/bin/bash
# first test
echo The time and date are:
echo uid:$UID
echo home:$HOME
echo the cost of the item is \$20
date
who
执行结果,$前面加/就不是变量了
当然脚本里面也可以自己定义变量,用法和环境变量的方式差不多
例子
#!/bin/bash结果:说明赋值另一个变量的值要用$取
#two test2
name1=zhang
age1=25
name2=$name1
age2=age1
echo name:$name1 age:$age1
echo name:$name2 age:$age2
关于反引号·:哈哈在键盘上和~是一个键
作用是将命令的值赋给变量
测试小例子
#!/bin/bash
#two test3
time1=date
time2=`date`
time3=$date
date
echo time1:$time1
echo time2:$time2
echo time3:$time3
~
结果:看到结果也就证实了反引号·的作用
关于格式化日期
date +%y%m%d
直接在shell里面可以测试,将当前的年月日输出170518
接下来就是运行的结果的输入输出了,刚刚的运行结果都输出在控制台了,那如果想输出到文件中呢?
>重定向输出的位置,>>追加到某文件文本后面
<输入的重定向:将文件的内容重定向到命令
查询test2 的行数6,单词数7 ,字节数64
某个命令的输出是另一个命令的输入:管道
rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序
rpm -aq 进行排序,先将rpm -aq 结果写入文件,在用sort排序输出
转换成一条命令,没有中间的文件缓存
rpm -aq | sort
太快太多是吧,那就more或者less下,一屏一屏的看
rpm -aq | sort | more
比较常见的命令: ls -l |more
数学运算:expr 允许在命令行上执行数学运算
expr 1 + 5
一些特别的要注意乘*
要转义
expr 1 \n * 5
echo $[ 1+ 20]
echo $[1 * 2]
在[ ]不用担心转义的问题
bash shell只支持整数的计算 ,内建的bash计算器
scale为变量控制,控制输出小数点后多少位
quit退出
在脚本中使用bc,使用的格式·echo “ scale=4;3.14/5” | bc·
#!/bin/bash关于长的计算的表达式
bcnum=`echo " scale=4; 3.14 / 5" | bc`
echo $bcnum
使用格式:变量=·bc<<EOF
表达式
EOF·
EOF可以为任意字符串,只要头尾呼应即可
测试例子:
关于退出状态的使用
当执行了一个shell的脚本,或许出错,或许正常,或许走的if或者else的条件不同,输出所走路径标识,类似于Java的system,out.println(),插入输出语句(不过常用debug打断点调试)在shell也可以使用
echo $? 用于当一个脚本执行完获取执行情况(结果)命令,
返回值为0,意味结果成功,
返回值为1,意味未知错误,
返回值为2,意味误用了shell的命令,
返回值为126 ,意味着命令不可执行
返回值为130 ,意味着被ctrl+c终止
。。。。。。。
当然,返回值,我们也也可以自己设置,用于辅助检查脚本
自己设置用exit 5, 设置返回值为数字5
如果使用echo $? 则会返回5
例子:
#!/bin/bashvim test5 部分添加了exit 5
val1=3.14
val2=2
val3=6.28;val4=3
val5=`bc<<EOF
scale=4
val1=$val1 / $val2
val2=$val3 * val4
val1+val2
EOF`
echo the val7:$val5
exit 5
结果对比: