首页 > 系统服务 > 详细

Linux编写Shell脚本

时间:2017-01-19 16:54:26      阅读:202      评论:0      收藏:0      [点我收藏+]

一、 一般编写shell需要分3个步骤

1. 新建一个脚本文件,并编写程序

vi hello.sh

#!/bin/bash

#注释

#输出
printf %s\n "Hello World!"
echo "Hello World!"

2. 给该文件添加执行权限
chmod +x hello.sh

如果权限不够,可以用管理员权限

sudo chmod +x hello.sh

3. 执行脚本

相对路径,在这个脚本所在的文件下,

./hello.sh

绝对路径,假设我的文件在/home/user/hello.sh

./home/user/hello.sh

4. 输出结果如下

Hello World!

Hello World!

 

二、 计算程序运行时间

1. 首先获取时间

技术分享
#!/bin/bash
#获取当前时间 yyyy-MM-dd HH:mm:ss 格式
nowtime=`date --date=0 days ago "+%Y-%m-%d %H:%M:%S"`
#获取当前日间 HH:mm:ss 格式
nowtime2=`date --date=0 days ago +%H:%M:%S`
printf %s\n "A is: $nowtime"
printf %s\n "A is: $nowtime2"
View Code

可以参考www.2cto.com/os/201512/455379.html

2. 执行程序

其中sum是我写的c语言程序编译后的文件

#!/bin/bash
#绝对路径
/home/hadoop/zc/c/sum 
#相对路径
#./sum

3. 程序运行时间(延时)

Linux shell脚本中的延时

可以使用sleep或usleep函数:

i: sleep:默认为秒

sleep 1s 表示延时1秒

sleep 1m 表示延时1分钟

sleep 1h 表示延时1小时

sleep 1d 表示延时1天

ii: usleep:默认为微秒

1s = 1000ms = 100000us

#!/bin/bash
#s为单位
#date中有很多控制格式的,其中%s是获取当前时间距离1970-01-01 00:00:00 UTC的时间差。
#记录开始时间
start=$(date +%s)
#程序
sleep 5s
#记录结束时间
end=$(date +%s)
#计算时差
time=$(( $end - $start )) 
#输出 
#echo $time
printf %s\n "sleep $time seconds"

4. 程序执行时间(以sum为例)

#!/bin/bash
#s为单位
#date中有很多控制格式的,其中%s是获取当前时间距离1970-01-01 00:00:00 UTC的时间差。
#记录开始时间
start=$(date +%s)
#程序
/home/hadoop/zc/c/sum
#记录结束时间
end=$(date +%s)
#计算时差
time=$(( $end - $start )) 
#输出 
#echo $time
printf %s\n "Program Finished in $time seconds"

 

三、 先后提交两个程序

如果两个程序在一个终端提交,则运行会出现问题。所以两个程序要在多个终端上运行。

linux Shell新建终端,可以参考Ubuntu下自动打开多终端的多个标签并执行不同脚本的方法

#!/bin/bash
#新建终端
gnome-terminal
#新建标签页
#gnome-terminal --tab

但是,新建终端后,两个程序还是在同一个终端上运行,还会出问题。

一个脚本我还没实现,不知道能不能做到。

但是我用两个脚本做到了,第一个脚本是wc.sh,第二个脚本是pi.sh,我们执行第一个脚本,第一个脚本延迟5s后自动调用第二个脚本如下:

#!/bin/bash
printf %s\n "Hello WC!"
#休眠5s
sleep 5s
#
#./pi.sh
gnome-terminal -x bash -c "bash ./pi.sh;exec bash"
#!/bin/bash
#新建终端
#gnome-terminal -x bash -c "ls; exec bash"

printf %s\n "Hello Pi!"

最后效果是先打印出Hello WC! ,然后等5秒,创建一个新终端,并调用pi.sh ,这时开始执行pi.sh,结果是打印Hello Pi!

关于怎样在新的终端调用程序,可以参考gnome-terminal技巧

 

Linux编写Shell脚本

原文:http://www.cnblogs.com/zhangchao0515/p/6305886.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!