基于Bash脚本自己开发ROS的一键启动

本文涉及的产品
资源编排,不限时长
简介: 基于Bash脚本自己开发ROS的一键启动

0 前言


最近没啥可以写博客的好点子,为此一直咕咕咕了。端午节没啥事,左右苦思冥想,发现网上针对ROS的bash启动脚本几乎还是处于0的状态。为此针对性的给ROS开一个bash脚本的教程是非常有必要的。也希望各位大佬能提点意见,如果后续合适,我会继续根据各位的意见来继续开坑的。


20210614201330466.png


1 bash 脚本简介


1.1 bash 脚本基础介绍


首先我们知道常见的bash脚本是基于shell文件的。因为bash是免费的并且很容易使用。所以很多开源作者所提供的脚本都是使用bash。为此我们非常有必要去对该脚本语言结构进行详细阐述


  1. 程序必须以下面的行开始(必须方在文件的第一行)。符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序:


#!/bin/sh


bash提供一些可选项帮助你调试程序,-x option它在执行时打印命令和参数。它被称为打印调试,跟踪或x跟踪。我们可以通过修改第一行来使用它;-e option它代表“出错”。如果命令以非零退出状态退出,这将导致脚本立即退出。-v option它在读取时打印shell命令/输入行。这些选项可以组合使用,一次可以使用多个选项!


#!/bin/bash-xe
#!/bin/bash-ex
#!/bin/bash-x-e
#!/bin/bash-e-x


  1. 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。bash脚本的注释非常有必要,也为了未来我们去分析我们所写脚本的作用及工作原理。


  1. 脚本执行,我们可以通过两种方式,来运行filename文件:


chmod +x filename
 ./filename


1.2 bash 脚本基础语句介绍


  1. bash脚本也可以对变量赋值,但是注意,等号两边不应有空格。同时bash中的语句结尾不需要分号(";")。


num="hello world"
NUM=$(num)#该命令执行后的输入结果赋值给一个变量
read -p "Please Enter You Name: " NAME #read 命令接收键盘的输入
echo "Your Name Is: $NAME"


  1. 如果我们需要打印变量a的内容,则可以用echo来实现文本的打印


#变量分开打印
num=2
echo "NUM is:"
echo $num
#一行打印
num=2
echo "this is the "$num
echo "this is the ${num}nd"


  1. $符号在bash文件中起到非常重要的作用。当我们在执行脚本时有时很想传个参数进去,如:#sh mysh.sh abc那这时候需要用到$符号


$# #传入脚本的命令行参数个数
$* #所有命令行参数值,在各个参数值之间留有空格
$0 #命令本身(shell文件名)
$1 #第一个命令行参数
$2 #第二个命令行参数


我们可以用以下脚本进行测试


sh my.sh a b c d e


my.sh


#!/bin/sh
echo "number of vars:"$#
echo "values of vars:"$*
echo "value of var1:"$1
echo "value of var2:"$2
echo "value of var3:"$3
echo "value of var4:"$4
echo "value of var4:"$100 #执行时并没有输入100个参数,那取得的值为 NULL


另外还有其他的 $符号指令


$$
#Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)
$!
#Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)
$?
#最后运行的命令的结束代码(返回值)即执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$*
#所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个。
$@
#所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
#$@ 跟$*类似,但是可以当作数组用


…详情请参照古月居


相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
相关文章
|
5月前
|
监控 安全 Shell
防止员工泄密的措施:在Linux环境下使用Bash脚本实现日志监控
在Linux环境下,为防止员工泄密,本文提出使用Bash脚本进行日志监控。脚本会定期检查系统日志文件,搜索敏感关键词(如"password"、"confidential"、"secret"),并将匹配项记录到临时日志文件。当检测到可疑活动时,脚本通过curl自动将数据POST到公司内部网站进行分析处理,增强信息安全防护。
168 0
|
5月前
|
存储 Shell Linux
Linux Bash 脚本中的 IFS 是什么?
【4月更文挑战第25天】
104 0
Linux Bash 脚本中的 IFS 是什么?
|
2月前
|
Shell
一个能够生成 Markdown 表格的 Bash 脚本
【8月更文挑战第20天】这是一个使用Bash脚本生成Markdown表格的示例。脚本首先设置表头与内容数据,然后输出Markdown格式的表格。用户可以根据需要自定义表格内容。使用时,只需将脚本保存为文件(如 `generate_table.sh`),赋予执行权限,并运行它,即可在终端看到生成的Markdown表格。
|
2月前
|
Unix Shell Linux
在Linux中,什么是Bash脚本,并且如何使用它。
在Linux中,什么是Bash脚本,并且如何使用它。
|
2月前
|
Shell 开发者
深入理解Bash脚本中的函数
【8月更文挑战第20天】
22 0
|
2月前
|
存储 Shell 数据处理
深入探讨Bash脚本中的数组
【8月更文挑战第20天】
15 0
|
2月前
|
存储 Shell
Bash 脚本中的 `hash` 命令
【8月更文挑战第19天】
13 0
|
4月前
|
Unix Shell Linux
技术经验分享:Bash脚本命令使用详解
技术经验分享:Bash脚本命令使用详解
33 0
|
5月前
|
存储 弹性计算 运维
用bash脚本创建目录
【4月更文挑战第29天】
40 3
|
5月前
|
存储 Unix Shell
【简化Cmake编译过程 】编写通用的bash脚本:简化和构建cmake高效自动化任务
【简化Cmake编译过程 】编写通用的bash脚本:简化和构建cmake高效自动化任务
200 0