这篇教程是<Beginning Linux Programming> 3rd 第二章的读书笔记.进行了一些小小的改动,更好突出主题.
1 起步走
这个例子说明了如何编写shell,声明变量,读入用户输入,引用变量
#!/bin/sh
#Author: Yunshichen
#Created at: 2009.08.19
a=Hello
echo "a is: "$a
#带空格的字符串必须要用双引号括起来.
#a=Hello world!
#echo "a is: "$a
a="Hello world!"
echo "a is: "$a
#=号两边不能有空格.
#a = "Hello world!"
echo "a is: "$a
echo "What's your name?"
read aname
echo "hello, "$aname
exit 0
#知识点:
#1>每个shell都以#!/bin/sh开头,文件名一般是xxx.sh
#2>变量都存储为字符串
#3>如果字符串包含空格,就必须用引号括起来
#4>变量赋值时,等号两边不能有空格.
#5>从终端读取变量不需要引号.
#6>用$varname的方式引用变量值
把上述程序存为1.sh,打开文件所在的文件夹,依次执行
chmod +x 1.sh
./1.sh
就可以看到程序运行效果.
写完shell程序之后,都必须以上述方式改变文件属性,执行才能得到输出结果.以下不再赘述这个过程.
2 单引号的使用
#!/bin/sh
#Author: Yunshichen
#Created at: 2009.08.19
myvar="Hi there"
echo $myvar
echo "$myvar"
echo '$myvar'
echo \$myvar
echo Enter some text
read myvar
echo '$myvar' now equals $myvar
exit 0
#知识点:
#1>单引号的作用
#2>$可以通过\取消变量
3 参数变量
如果脚本程序在调用时带有参数,Linux就会创建一些额外的变量.姑且称之为参数变量
#!/bin/sh
#Author: Yunshichen
#Created at: 2009.08.19
echo "The separator between parameters is: $IFS"
echo "The program $0 is now running"
echo "There are $# parameters"
echo "The first parameter was $1"
echo "The second parameter was $2"
echo "The parameter list was $*"
IFS=''
echo "Using \$@,the parameter list was $@"
echo "Using \$*,The parameter list was $*"
exit 0
#知识点
#1>$IFS : 分隔单词的字符,通常是空格,制表符和换行符.
#1>$0: shell脚本的名字
#2>$#: 传递给脚本的参数个数
#3>$$: shell脚本的进程号
#4>$1,$n..: 脚本程序的参数
#5>$*: 在一个变量间列出所有参数,各个参数以IFS定义的分隔符分隔.
#6>$@: 在一个变量间列出所有参数,不同的是参数不用IFS分隔.所以用$@比用$*更好.
将文件存为3.sh .输入 ./3.sh aaa bbb ccc 察看输出结果.