导言

编写shell脚本的时候遇到了一些不大明白的命令,同时自己对于非常用命令老是忘掉,干脆直接写一篇文档做一个shell脚本的入门教程

shell脚本对于嵌入式只要做到入门就行了,主要用来自动调用各种程序。

这个系列会分很多篇,基本上收集到相关资料就会出一篇分享一下

语法

选择解释器
  • 开头打上如下命令
1
#! /bin/sh
  • 选择bin里的sh作为解释器
脚本基础符号解释
  • 注释符 #
  • 变量标识 $
    (只能在脚本中使用)
1
$ x=10 #表明x是一个变量
  • 单双引号

单引号会把引号里的所有元素当成字符串

双引号会把引号之内的变量当成变量,但是其他的元素还是当成普通字符串元素

  • 倒引号(用得比较少)

`` 倒引号:命令替换,在倒引号内部的shell命令首先被执行,其结果输出代替用倒引号括起来的文本。

  • 反斜杠(两种用法)

作为转义符,类似于c
作为续行符,如果一条命令太长,可以在行尾加

  • 分号(换行符)
一些细节
  • shell中的多行注释
1
2
3
4
5
:<<!(感叹号可替换)
注释内容...
注释内容...
注释内容...
!
  • shell里的scanf:read
1
2
read -p  "please input a  number:" num
echo "${num}"
  • if语句
1
2
3
4
5
6
7
8
9
10
if [条件1] 
then #我是注释,如果条件1为真执行第一个 then 后面的
#条件1成立程序
elif [条件2]
then #我是注释,如果条件2为真执行第二个 then 后面的
#条件2成立程序
else
#条件1和2都不成立程序
fi

  • switch 语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  case 值 in
模式1)
#模式1程序
#模式1程序
...
#模式1程序
;;
模式2)
#模式2程序
#模式2程序
...
#模式2程序
;;
esac

命令

echo
  • 类似c语言里的printf,主要作用是打印数据
1
echo [选项] [字符串]
  • 打印 hello world
1
echo hello_world 
  • echo 带 -e,启用反斜杠转义符
  • echo 输出到固定的文件
1
echo "Test Page"> testpage
source
  • source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。因为linux所有的操作都会变成文件的格式存在。
  • 这就是linux系统薄纱windows的一点,可以在更新后不用重启
1
2
3
source filename		# filename必须是可执行的脚本文件
或者
. filename # 注意“.”号后面还有一个空格

脚本开机自启

方法一

修改/etc/rc.d/rc.local

  • 先给与自启动文件权限
1
chmod +x /etc/rc.d/rc.local
  • 编一个脚本
1
2
3
#!/bin/bash
date >> /home/yoghurtcc/output.txt
hostname >> /home/yoghurtcc/output.txt
  • 在开机的时候的调用
1
echo "/home/yoghurtcc/auto_run_script.sh" > /etc/rc.d/rc.local
  • 重启就可以启动
方法二

利用crontab工具

1
crontab -e
  • 开启工具
1
@reboot /home/yoghurtcc/auto_run_script.sh
  • 设置参数

(未完待续)