Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。
Shell初学者请注意,在平常应用中,建议您不要用 root 帐号运行 Shell 。作为普通用户,不管您有意还是无意,都无法破坏系统;但如果是 root,那就不同了,只要敲几个字母,就可能导致灾难性后果。
变量赋值与引用:
变量名=值
要取用一个变量的值,只需在变量名前面加一个$( 注意: 给变量赋值的时候,不能在"="两边留空格 )
Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:
- 首个字符必须为字母(a-z,A-Z) 或者_
- 中间不能有空格,可以使用下划线(_)
- 不能使用其他标点符号
#!/bin/bash
a="hello word";
echo "${a}s";
有时候变量名可能会和其它文字混淆,比如:
num=2
echo "this is the $numnd"
上述脚本并不会输出"this is the 2nd"而是"this is the ";这是由于shell会去搜索变量numnd的值,而实际上这个变量此时并没有值。这时,我们可以用花括号来告诉shell要打印的是num变量:
num=2
echo "this is the ${num}nd"
已定义的变量,可以被重新定义,如:
your_name="tom"
echo $your_name
your_name="alibaba"
echo $your_name
这样写是合法的,但注意,第二次赋值的时候不能写$your_name="alibaba",使用变量的时候才加美元符($)。
Shell 注释
以“#”开头的行就是注释,会被解释器忽略。shell里没有多行注释,只能每一行加一个#号
如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。
Shell字符串
字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。
单引号:
str = 'this is string
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
name='rockie bob'
echo "Hello ,I know your name \"$name\""
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
拼接字符串:
str1='hello'
str2='word'
echo $str1 $str2 I\'m bob
获取字符串长度:
string='abcd'
echo ${#string} #输出 4
提取字符串:
string="alibaba is a great company"
echo ${string:1:4} #输出liba
查找字符串:
string="alibaba is a great company"
echo `expr index "$string" is`