Linux Shell 编程学习实践(一)——认识Shell编程
Shell
script 基本结构
#!/bin/bash
--------bash
shell开头必须部分
#
description
--------注释部分(可有可无,为了阅读方便最好加以说明)
variable
name=value
---------变量部分,声明变量,赋值
control
segment ---------流程控制结构,如判断、循环、顺序
Shell 特性
①别名
alias
eg. alias ll = “ls -l”
②管道
a
|b
将a命令的输出作为b命令的输入
eg.
ls |sort 将ls列举的项排序
③命令替换
a
`b`
将b命令的输出作为a命令的输入
eg.
ls `cat myfile` 列举出cat
myfile的输出项
④后台运行
nohup
command&
可通过jobs
-l查看后台运行的脚本
⑤重定向
>,<
可以改变程序运行的输出来源和输入来源
⑥变量
可以用$varname
来调用变量
⑦特殊字符
`用来替换命令
\用来使shell无法认出其后的特殊字符,使其失去特殊含义
;允许一行放多个命令
()
创建成组的命令
??
{}
创建命令块
??
第二章:变量和运算符
●本地变量:在用户现在的shell生命期的脚本中使用。设置变量:various_name=value.可用set
来查看。用readonly可以使变量只读。
●环境变量:用于当前用户下所有用户进程(不限于现在的shell)。
设置变量:export
various_name=value。用env查看。
用readonly可以使变量只读。
●变量替换
echo
${variable name}
显示实际值到variable
name
echo
${variable name:+value} 如果设置了variable
name,则显示其值,否则为空
echo
${variable name:?value} 如果未设置variable
name,则显现用户定义错误信息value
echo
${variable name:-l}
如果未设置,则显示其值
echo
${variable name:=value}
如果未设置,则设置其值,并显示
●清除变量
unset
variable name
●位置变量
位置变量表示$0,$1,$2...$9
$0
----脚本名字
$1
----根据参数位置表示参数1
eg1.
#1/bin/bash
#parm.sh
echo "this is script name : $0"
echo "this is parameter 1 : $1"
echo "this is parameter 2 : $2"
终端:
junsheng@ubuntu:~$ sh parm.sh
this is script name : parm.sh
this is parameter 1 :
this is parameter 2 :
junsheng@ubuntu:~$ sh parm.sh a b
this is script name : parm.sh
this is parameter 1 : a
this is parameter 2 : b
eg2:(从终端copy下来的)
junsheng@ubuntu:~$ cat parm1.sh
#!/bin/bash
#parm1.sh
find . -name $1 -print
junsheng@ubuntu:~$ chmod u+x parm1.sh
junsheng@ubuntu:~$ sh parm1.sh parm
junsheng@ubuntu:~$ sh parm1.sh parm.sh
./parm.sh
特殊变量
$#
传递到脚本的参数个数
$*
以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$
脚本运行的当前进程ID号
$!
后台运行的最后一个进程的进程ID号
$@
传递到脚本的参数列表,并在引号中返回每个参数
$-
显示shell使用的当前选项,与set命令功能相同
$?
显示最后命令的退出状态,0表示没有错误,其他表示有错误
junsheng@ubuntu:~$ cat parm2.sh
#1/bin/bash
#parm2.sh
echo "this is shellname : $0"
echo "this is parm1 : $1"
echo "this is parm2 : $2"
echo "show parm number : $#"
echo "parm list : $*"
echo "this id is : $$"
echo "this back id is : $!"
echo "parm list2 : $@"
echo "show exit state : $?"
junsheng@ubuntu:~$ sh parm2.sh a b
this is shellname : parm2.sh
this is parm1 : a
this is parm2 : b
show parm number : 2
parm list : a b
this id is : 10094
this back id is :
parm list2 : a b
show exit state : 0

浙公网安备 33010602011771号