基本认识
shell是用C语言编写的程序。既是一种命令语言,又是一种程序设计语言。
业界所说的shell通常是指shell脚本。
shell环境:edit+interpreter。常见种类:sh,bash,dash,csh。
第一个shell脚本
[root@bogon d1]# cat test.sh
#!/bin/bash
echo "hello world!"
运行:
作为可执行文件:(依赖shebang)
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
作为解释器参数:(不依赖)
sh test.sh
bash test.sh
全局运行:(变量加入了当前环境中)
. test.sh
source test.sh
变量、字符串、注释
变量赋值:千万不要加空格
变量使用:$ or ${}
只读变量: readonly
删除变量:unset
不能删除一个只读变量,echo一个已删除的变量不会报错,为空。
变量类型:全局变量、局部变量、shell变量(特殊变量,有的是全局变量有的是局部变量)
字符串:
单引号:原样输出,不转义,不支持变量
双引号:支持变量
无引号:简单字符串
拼接:
greeting="hello, "$name" !"
greeting="hello, $name !"
greeting="hello, ${name} !"
获取长度:
[root@bogon d2]# sh 4
4
4
[root@bogon d2]# cat 4
str="abcd"
echo ${#str}
echo ${#str[0]}
注释:
单行:#
多行:
:<<EOF
注释内容...
注释内容...
注释内容...
EOF
# EOF 也可以使用其他符号:
技巧:要注释一大段代码,多行注释并不太方便,可以用{}形成函数。shell中并不太好用的技巧,还是别用了。
shell传递参数
$n
运行shell脚本传递的参数,$0文件名,$1第一个参数,往后以此类推。
$#
参数个数
$* and $@
都表示所有参数,前者宏观表示一个字符串,后者微观表示一个个。
[root@bogon d2]# cat 9
#!/bin/bash