强力推荐一个学习shell Linux 入门的好网站。
http://c.biancheng.net/cpp/view/6998.html (下面学习的例子大部分来自这个网站,转载声明)
我目前看到,编译型语言 和 解释型语言,发现挺难真正了解其区别,特意找到一些资料,清楚多了。
编译 解释:
总结得当 : http://www.cnblogs.com/zy1987/p/3784753.html?utm_source=tuicool
http://www.zhihu.com/question/21486706
http://www.zhihu.com/question/19608553
http://www.zhihu.com/question/28873481
基础、深入 : http://rednaxelafx.iteye.com/blog/492667
暂时先不纠结这种编译 解释。
开始从0开始学习shell命令,了解一门强大的语言是如何工作和它的魅力吧!
#!/bin/bash
echo "Hello World !"
前面的#! 表示使用哪一个解释器来作为我们脚本的解释器,在上面的了解下应该很好理解吧,先声明一个解释器的习俗。
同理:
#!/bin/sh
使用的就是sh这个解释器。
直接输入脚本你会发现碰了一鼻子墙壁。
那么如何执行以上的代码呢?
1.在当前目录中用sh即可:
2.先将脚本命令具备执行权限,然后执行当前命令:
3.指名道姓让解释器帮你执行:
这种方式特别在于动用系统的一些内嵌工具的时候,例如用Mac自带的签名工具:/usr/bin/codesign
而且可以赋予参数,具体可以自行查阅。
一段简单的带“读”的脚本:
echo "What is your name?"
read PERSON
echo "Hello, $PERSON"
由这我们可以知道是用$来取变量。
而PERSON就是一个shell变量,shell变量和一般程序语言的限定一样,不可数字开头、关键字等。而shell比较特俗的是变量的赋值不可以有空格。
关于变量还有一个需要注意的是 { } 中括号的使用,在切包的系统里面可以见到:
# 切换工作目录 #
filename=$(basename "$0")
commond=`pwd`/${filename}
echo "Usage:
${commond} 91
${commond} pp
${commond} 37yueyu
那究竟是什么意思呢?看一个例子:
#!/bin/bash
for skill in Ada Coffe Action Java
do
echo "I am good at $skillScript"
done
和:
#!/bin/bash
for skill in Ada Coffe Action Java
do
echo "I am good at ${skill} Script"
done
和分别的输出:
所以建议都加上。
shell变量也有限定词,例如不可变的只读关键字:readonly
还可以删除变量unset ,这以后就不能使用该变量了。但是不能删除只读变量。
变量类型
运行shell时,会同时存在三种变量:
1) 局部变量
局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
2) 环境变量
所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
3) shell变量
shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行