与编译型语言不同,shell脚本是一种解释型语言。

执行这类程序时,解释器(interpreter)需要读取我们编写的源代码(source code),并将其转换成目标代码(object code),再由计算机运行。

Linux默认的脚本解析器是bash。

参考资料 http://c.biancheng.net/cpp/view/6994.html

第一个Shell脚本

下面演示我们的第一个shell脚本,使用文本编辑器(如vi),键入如下代码并保存为hello.sh

#!/bin/bash

# 打印hello world
echo "Hello World !"

然后给该脚本赋予执行权限

chmod +x ./hello.sh

然后执行该脚本,终端就会显示Hello World!

其中脚本第一行#!/bin/bash 指明了该脚本的解释器

sh里没有多行注释,只能每一行加一个#号

read命令

下面的脚本使用read命令从 stdin 获取输入并赋值给 PERSON 变量,最后在 stdout 上输出

#!/bin/bash
echo "What is your name?"
read PERSON
echo "Hello, $PERSON"

下面是运行情况

Shell变量

定义变量

variableName="value"

使用一个定义过的变量,只要在变量名前面加美元符号($)即可,如:

name="runnyu"
echo ${name}

花括号可加可不加,加花括号是为了帮助解释器识别变量的边界。使用readonly+变量名可以将变量定义为只读变量,unset+变量名可以删除变量

readonly name
unset name

特殊变量

编写special.sh测试

#!/bin/sh
echo "pid=$$"
echo "$0"
echo "$1"
echo "$2"
echo "$#"
echo "$*"

运行结果

$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。

但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。

最新文章

  1. ORLEANS REMOTE DEPLOYMENT
  2. C++复现经典游戏——扫雷
  3. Dewey – 标记和搜索 Chrome 浏览器书签
  4. 转 自定义View之onMeasure()
  5. Android studio 读取properties文件
  6. symfony2-不同bundle的entity的一对多关系
  7. Core Animation之多种动画效果
  8. 深入理解 JavaScript 异步系列(4)—— Generator
  9. Appium python自动化测试系列之日志的收集(十二)
  10. DXGI快速截屏录屏技术
  11. JWT实战:使用axios+PHP实现登录认证
  12. BigDecimal.valueOf
  13. /bin, /sbin & /usr/bin, /usr/sbin & /usr/local/bin, /usr/local/sbin & glibc
  14. Web前端方向课程要点:CSS3渐变制作过程
  15. termios结构体各成员的值(FreeBSD 12.0)
  16. 关于SGA中的granule size
  17. 集合框架_DAY15
  18. SendMessage wMsg常量值参考
  19. react-native 打包 出apk
  20. ASP.NET Core 中的应用程序启动 Startup

热门文章

  1. http的一些知识
  2. CF 964C Alternating Sum
  3. CSS Modules使用方法
  4. tomcat 日志输出
  5. BZOJ 4766: 文艺计算姬
  6. Vijos[1028]魔族密码
  7. mysql-count与sum
  8. Linux设备模型(热插拔、mdev 与 firmware)【转】
  9. python 集合比较(交集、并集,差集)
  10. DB2 数据库中字段特定字符替换为空