定义与使用变量
[ck143117137@shell.ceshiren.com ~]$ a=1
[ck143117137@shell.ceshiren.com ~]$ echo $a
1
只读变量
[ck143117137@shell.ceshiren.com ~]$ b=10
[ck143117137@shell.ceshiren.com ~]$ readonly b
[ck143117137@shell.ceshiren.com ~]$ echo $b
10
[ck143117137@shell.ceshiren.com ~]$ unset b
-bash: unset: b: 无法反设定: 只读 variable
删除变量
a=10
unset a
echo $a
-bash: ehco: command not found
变量类型
数组
[root@VM-0-5-centos yum.repos.d]# name=(1 aas22 21212aa 33131aaa)
[root@VM-0-5-centos yum.repos.d]# echo ${name[2]}
21212aa
# 单独赋值
[root@VM-0-5-centos yum.repos.d]# name[2]="new number"
[root@VM-0-5-centos yum.repos.d]# echo ${name[2]}
new number
例子1:拼接字符串
[ck143117137@shell.ceshiren.com ~]$ name="yao"
[ck143117137@shell.ceshiren.com ~]$ new_name="hello,"$name""
[ck143117137@shell.ceshiren.com ~]$ echo $new_name
hello,yao```
# 数组取值
[ck143117137@shell.ceshiren.com ~]$ a=(1 2 3 4 a)
[ck143117137@shell.ceshiren.com ~]$ echo ${a[0]}
1
[ck143117137@shell.ceshiren.com ~]$ echo ${a[4]}
a
## 单独赋值
[ck143117137@shell.ceshiren.com ~]$ a[1]="哈哈哈"
[ck143117137@shell.ceshiren.com ~]$ echo ${a[1]}
哈哈哈
[ck143117137@shell.ceshiren.com ~]$ echo ${a[@]}
1 哈哈哈 new 4 a
if语句
[ck143117137@shell.ceshiren.com ~]$ if [[ $a>$b ]]; then echo "$a>"$b""; fi;
20>10
# 这里有遇到的坑,if后面需要有一个空格[ $a>$b ]前后也有空格,没有空格的话会报错。只有==需要一个[],>和< 分别要加双层的[[ $a < $b ]]
for循环
[ck143117137@shell.ceshiren.com ~]$ for i in $(cat test01.txt); do echo ${i} ; done
niroot
idjajsidas
jijifjia
123213
jiasjidjas
123123213
jdiasjdiasjdiasjdas
dasdjaisjdias
jijijijij
heleloo
yaoyingdong
while循环
[ck143117137@shell.ceshiren.com ~]$ while read i ;do echo $i;done<test01.txt
niroot
idjajsidas
jijifjia
123213
jiasjidjas
123123213
jdiasjdiasjdiasjdas
dasdjaisjdias
jijijijij
heleloo
yaoyingdong
read的用法
循环读取文件内的内容
while reat d line;do echo $line;done <test02.sh
yaoyingdong@192 ~ % read 1 2 3 4
a b c d
yaoyingdong@192 ~ % echo $1
a
# 这里直接回车read,输入一个参数,会把这个参数保存给REPLY
yaoyingdong@192 ~ % read
123123
yaoyingdong@192 ~ % echo $REPLY
123123
脚本传参
$0 脚本名称
1
1~
1 n 获取参数
$# 传递到脚本的参数个数
$$ 脚本运行的当前进程ID号
$* 以一个单字符串显示所有向脚本传递的参数
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误
#!/bin/bash
echo "hello!"
echo $1,$2,$3
echo "文件名" $0
echo "参数数量" $#
echo "all" $*
echo "return"$?
算数运算
a=10 b=20
- 加法
expr $a + $b
结果为 30
-
减法 `expr $a - $b` 结果为 -10
- 乘法
expr $a \* $b
结果为 200
/ 除法expr $b / $a
结果为 2
补充:还可以这样写 num=$((num1 + num2))
#!/bin/bash
a=20
b=10
echo `expr $a + $b`
echo `expr $a \* $b`
if 判断
-eq 检测相等 [ $a -eq $b ] 返回 false
-ne 检测不相等 [ $a -ne $b ] 返回 true
-gt 检测左边是否大于右边 [ $a -gt $b ] 返回 false
-lt 检测左边是否小于右边 [ $a -lt $b ] 返回 true
-ge 检测左边是否大于等于右边 [ $a -ge $b ] 返回 false
-le 检测左边是否小于等于右边 [ $a -le $b ] 返回 true
#!/bin/bash
a=20
b=10
echo `expr $a + $b`
echo `expr $a \* $b`
if [ $a -gt $b ]
then
echo 'true'
elif [ $a -eq $b ]
then
echo 'false'
fi
bash 执行命令
#!bin/bash
mkdir test
cd test
echo "hello world" > test.txt
cat test.txt