shell脚本基础
一、shell脚本的第一行总是以一个固定的语句开头;
#!/bin/sh
或
#!/bin/bash
这行语句表示这段脚本使用程序/bin/sh解释器对其进行解释并且执行,这个解释器就是shell。
在第二行注释中写入脚本名是一个好习惯。
#!/bin/sh
#test.sh
#输出一个字符串hello world
echo "hello world"
bash和sh的区别:
SH: sh就是Bourne shell 这个是UNIX标准的默认shell,对它评价是concise简洁 compact紧凑 fast高效,由AT&T编写,属于系统管理shell.
BASH: bash是 GNU Bourne-Again SHell (GNU 命令解释程序 “Bourne二世”)
是linux标准的默认shell ,它基于Bourne shell,吸收了C shell和Korn shell的一些特性。bash是Bourne shell的超集,bash完全兼容Bourne shell,也就是说用Bourne shell的脚本不加修改可以在bash中执行,反过来却不行,bash的脚本在sh上运行容易报语法错误。
二、shell中的变量:定义、赋值和删除
1. 变量的类型
shell脚本中的变量都是字符串,但shell允许比较操作和整数操作,其中关键因素是,这个整形变量中的值是否只有数字。如果只有数字则在进行整数操作时将其解释为一个整型;如果还包含其它的字符,则只能将其解释为字符串。
2. 变量的操作
变量名=变量值,等号前后不能有空格;
a=1
author=“ZJL”
变量的引用
符号 | 说明 | 示例 | 结果 |
---|---|---|---|
转义字符“\” | 如果将\放到特殊字符前面,shell就忽略这些特殊字符的原有含义,把它们当作普通字符对待 | mul=$((3 \ * 2)) 备注:\与*间无空格 | 6 |
单引号 | 如果将字符串放到一对单引号之间,那么字符串中所有字符的特殊含义被忽略 | name=‘作家的名字是${author}’ | 作家的名字是${author} |
双引号 | 双引号的引用与单引号基本相同,包含在双引号内的大部分特殊字符可以当作普通字符处理,但是仍然有一些特殊字符保留自己的特殊含义,比如”$“和“\”以及“ ` ” | name=“作家的名字是${author}” | 作家的名字是ZJL |
$var 或 ${var} | 直接引用 | name=$author | ZJL |
删除变量的赋值:unset 变量名
unset $author
表达式求值:exper命令 或 $((表达式))
expr 3 + 2
expr 3 \ * 2
$((3 + 2))
位置变量:运行一个shell脚本时,可以向脚本传递命令行参数;
$0 表示当前执行进程的文件名,也就是程序的执行文件名;
$1 ~ $9 对应命令参数的位置
$ ./args.sh arg1 arg2 arg3
即$0为./args.sh $1为arg1 …
友善链接: