0x01 编写一个简单的脚本
新建一个.sh后缀 的文件,
touch test.sh
vim test.sh
,内容如下:#!/bin/bash #This Is A Test pwd ls -al
#!
告诉系统使用哪一种Shell解释器,第二行的#
用来注释,之后的就是脚本内容bash test.sh
执行脚本,或者先给文件执行权限chmod +x ./test.sh
,注意要有./
,然后执行./test.sh
0x02 Shell变量
定义
定义变量的规则和其他编程语言差不多,值得注意的是Shell变量与等于号之间不能有空格(代码规范党/(ㄒoㄒ)/~~)
已经被赋值的变量(除了只读变量),可以重新赋值。
使用
使用一个定义过的变量,只需要再变量名前添加美元符号echo $test
或者ehcho {$test}
, 使用花括号可以避免这种情况echo "i just want to say $helloto you"
,他会把$helloto
当作一个变量。
只读变量
用readonly
可以将变量设置喂只读变量,只读变量的值不能被改变。
#!/bin/bash
test='a'
readonly test
删除变量
使用unset
可以删除变量(但是不能删除只读变量), unset test
0x03 Shell字符串
单双引号
双引号和单引号的区别和PHP差不多,双引号中可以放变量,一般说,单引号中的字符都会原样输出,但是这样可以输出变量'this is '$test'!'
获取字符串长度
string = 'a'
echo ${#string} #1
提取子字符串
string = 'this is a test'
echo ${string:0:4}#还蛮有Python那味的,哈哈,或者说,Python蛮有这味的?
查找字符串
string = 'this is a test'
echo `expr index "$string i"`#查找i的位置,是从1开始,这个expr命令
0x04 Shell注释
单行注释#
多行注释:<<[字符啥的]...[字符]
0x05 Shell数组
bash只支持一维数组,其他有待接触
定义数组
array_name=(value0 value1)
#or
array_name=(
val0
val1
)
#or
array_name[0]=val0
array_name[1]=val1
#...array_name[n]=... 值得注意的是可以使用不连续的下标,而且下标的范围没有限制
读取数组
var1=${array_name[n]}
读取某个数组
echo ${array_name[@]}
用@
或者*
来读取所有元素
获取数组的长度
# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[index]}
0x0 接收用户的参数
$0
为当前Shell脚本的名称,$#
对应总共有几个参数,$*
对应所有位置的参数值, $?
对应显示上一次命令的执行返回值,$1...$N
对应第N个参数
编写脚本如下
#!bin/bash echo "当前脚本名称为$0" echo "总共有$#个参数,分别为$*" echo "第一个参数为$1,第二个参数为$2"
bash test.sh 1 2 3
, 后面的1、2、3即为参数
0x03 判断
写到这里先不写了。