博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux编写Shell脚本入门
阅读量:5034 次
发布时间:2019-06-12

本文共 2336 字,大约阅读时间需要 7 分钟。

一、 一般编写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

可以不给文件加权限(即不要第2步)直接执行,如下命令:

bash hello.sh

sh 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

可以参考

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 = 1000000us

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

 

三、 先后提交两个程序

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

linux Shell新建终端,可以参考

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

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

i: 一个脚本的实现,运行两个程序。(以sum为例,假设sum在/home/user下面)

#!/bin/bashprintf '%s\n' "Hello test!"gnome-terminal -x bash -c "/home/user/sum;exec bash"

 

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

#!/bin/bashprintf '%s\n' "Hello WC!"#休眠5ssleep 5s##./pi.shgnome-terminal -x bash -c "bash ./pi.sh;exec bash" #或者 #gnome-terminal -x bash -c "./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!

关于怎样在新的终端调用程序,可以参考

 

四、 linux 下如何通过ssh到其他机器然后执行命令

这里ssh免密钥连接就不讲了。

如果我连到另一台机器上只是执行一个命令可以这样写:

ssh hostname@IP  cd /opt/    #其中 hostname是你要连接机器的用户名,IP是其对应的IP地址

如果我连到另一台机器上执行多于一个命令可以这样写:

ssh hostname@IP "cd /opt/;pwd"    #注意:当多于两个命令时,一定要把所有命令以分号的方式写在双引号里面。

 

转载于:https://www.cnblogs.com/zhangchao0515/p/6305886.html

你可能感兴趣的文章
第十七周博客作业<西北师范大学|李晓婷>
查看>>
[Err] 1136 - Column count doesn&#39;t match value count at row 1
查看>>
4.3dotnet watch run「深入浅出ASP.NET Core系列」
查看>>
iOS开发之版本控制(SVN)
查看>>
http
查看>>
洛谷 1125——笨小猴(简单的模拟)
查看>>
Centos7修改主机名称、DNS、网卡信息
查看>>
canvas小球运动
查看>>
Java_Web学习的开始,01Tomcat的配置
查看>>
React之设置元素的滚动条
查看>>
研究车联网的大数据更有意义
查看>>
Java NIO系列教程(一) Java NIO 概述
查看>>
如何通过Python暴力破解网站登陆密码
查看>>
MKNetworkKit下载图片并显示在UIImageView上
查看>>
sqlsa
查看>>
如何提高SELECT的效率
查看>>
WCF、WebAPI、WCFREST、WebService之间的区别【转载】
查看>>
Day24-part1-原生Ajax
查看>>
filter-自己的理解
查看>>
HDU - 2444 The Accomodation of Studentsp[二分图判定,匈牙利算法]
查看>>