Linux
shell 语法
转义字符
\ :\后面的一个字符按照其字面意思解释
“ ”:双引号中的内容除$、`、“之外的任何字符的字面解释
‘ ’ :单引号中除 ' 以外的任何字符按其字面解释
shell变量
环境变量:标准变量,通常由管理员定义,用来保存系统必需内容
局部变量:由用户定义和控制 export 使变量变成环境变量(全局变量)
set 命令:查看当前使用的shell变量
变量赋值
shell的变量都是字符串
var1="string"
var2='string'
var3=string
使用变量
使用$f符号
echo $var
echo ${var} // {}可以用来替换变量
- 只读变量 readonly
var1=name
readonly var1
或者 declear -r var1 - 获取字符串长度 echo $
- 获取子串 echo ${var:l:r} //获取从l到r区间的子串
- 注意,当变量名字与其他变量有重复部分,最好加上
删除变量
使用unset
unset var
删除后变量变成空字符串
特殊变量
$# 传入的参数个数
$* 所有参数
$@ 所有参数
$$ 当前进程id
$1-9 传入的参数
set 可以改变传入的参数
var1="one two three"
set 'echo var1'
注释
# 这是单行注释
:<<EOF
这是多行注释
EOF
其中EOF可以换成其他字符串,但是前后必须一样
:<<xyz
这是多行注释
xyz
数组
数组用小括号表示,元素之间用空格分开
array=(a b c d)
也可以直接用下标更改元素值
array[0]=1
${array[i]} 读取数组元素
${array[@]}读取整个数组
${array[*]}读取整个数组
${#array[@]}获取数组长度
循环语句
- for in do done
for i in val1 val2 val3
do
thing1
thing2
done
也可以使用命令的输出作为循环范围
for i in `ls`
do
echo $i
done
也可以指定循环范围为连续的区间,用seq命令
for i int $(seq 1 10) #输出1-10
do
echo $i
done
或者也可以这样写
for i in {1..10} #字母也可以是{a..z}
do
echo $i
done
- for((..;..;..)) do done
类似于c语言的循环
for ((i=1;i<=10;i++))
do
echo $i
done
- while do done
while condition
do
thing1
thing2
done