您的位置:首页 > 运维架构 > Shell

Shell 学习笔记一(基本语法)

2014-05-05 13:20 302 查看
         Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。

         Shell初学者请注意,在平常应用中,建议您不要用 root 帐号运行 Shell 。作为普通用户,不管您有意还是无意,都无法破坏系统;但如果是 root,那就不同了,只要敲几个字母,就可能导致灾难性后果。

变量赋值与引用:

变量名=值 

要取用一个变量的值,只需在变量名前面加一个$( 注意: 给变量赋值的时候,不能在"="两边留空格 )

Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:

首个字符必须为字母(a-z,A-Z) 或者_
中间不能有空格,可以使用下划线(_)
不能使用其他标点符号

输出第一个hello word!

#!/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`
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell 编程 bash