第一行:#!/bin/bash --> #! 标记脚本的解释器
脚本: #!/bin/bash
echo "hello world"
赋予执行权限 chmod +x ./test.sh
执行脚本:./test.sh
定义变量时不需要 $ 符号 :td='date "+%y%m%d"'
1.变量名和符号之间不能有空格
2.首个字符必须为字母
3.中间不能有空格,可以使用划线(_)
4.不能使用标点符号和 bash 中的关键字
除了显示赋值,还可用语句直接给变量赋值
for file in 'ls /etc' 将 /etc目录下的文件名循环出来
使用一个定义过的变量,只需在变量名前加上 $ 符号即可 echo $td 或 echo ${td}
对同一个变量名,可以进行二次赋值 eg: td='date "+%m%d"'
只读变量:readonly 定义变量为只读变量,变量值不可更改
url="http://www.baidu.com"
readonly url
url="http://www.tx.com" --> 报错
删除变量: unset variable_nae,不能删除只读变量
shell存在三种变量:①局部变量:脚本或命令中定义,仅在当前脚本有效
②环境变量:所有程序有效
③shell变量:由shell程序设置的变量,有局部也有环境
单引号字符串中不能有变量,不能做字符转义,双引号可以实现。
your_name="world"
拼接字符串 greeting="hello,${your_name} !"
获取字符串长度 ${#greeting}
提取1—4的字符串,下标从0开始 ${#greeting:1:4}
查找字符串 $(expr index "${greeting}" world)
反引号用于命令替换:td=`date "+%y%m%d"` 等同于 $(date "+%y%m%d")
./test.sh 1 2 3
执行的文件名:$0 --> ./test.sh
第一个参数为:$1 --> 1
第二个参数为:$2 --> 2
第三个参数为:$3 --> 3
参数的个数为:$# --> 3
脚本运行的当前进程ID:$$ -->8010
显示所有传递的参数:$* -->1 2 3
$* 与 $@ 的区别:$* 等价于 “1 2 3” ,相当于传递了一个参数,$@ 等价于 “1” “2” “3” 相当于传递了三个参数
shell数组:array_name=(value1 ... valuen) --> my_array=(A B "C" D)
读取数组元素:${array_name[index]}
获取所有数组元素: ${array_name[*]} 或 ${array_name[@]}
获取数组长度: ${#array_name[*]} 或 ${#array_name[@]}
Shell 基本运算符: