文章目录
Linux环境下使用 shell 的学习。
新建一个 shell 并定义变量
#vim test.sh
输入一段shell
#!/bin/bash
A=10
#!/bin/bash 为定义解释器。解释器有多种,还有 bin/sh 等Linux默认就是 /bin/bash
定义一个变量 A=10 (A和=中间不能有空格)
执行 shell 的几种方式
第一种方式 结果输出10
# /bin/bash test.sh
第二种方式
# sh test.sh
第三种方式
# ./test.sh
但是这种方式会报错
-bash: ./test.sh: 权限不够
需要给文件增加权限 # chmod 777 test.sh
然后在执行 # ./test.sh 就可以成功了
判断上一次执行shell脚本是否成功
# 如果返回 0 则成功
echo $?
查看当前服务器的磁盘信息
命令如下:
# df -h
# 输出下面的信息
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 24K 919M 1% /dev/shm
tmpfs 919M 500K 919M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/vda1 50G 8.5G 39G 19% /
tmpfs 184M 0 184M 0% /run/user/0
打印当前脚本路径
#!/bin/bash
echo "------------------"
A=99
echo A= $A
echo "B= $B"
echo "PWD= $PWD"
echo `pwd`
执行文件输出如下:$PWD 代表的就是Linux查看当前路径的命令 必须是大写的
pwd
取的是 Linux 程序集
------------------
A= 99
B=
PWD= /root/shellStudy
输出当前文件名
其中 $0 代表的就是当前文件名
#!/bin/bash
echo "当前shel脚本的名称是:$0"
# 输出结果如下:
# 当前shel脚本的名称是:test.sh
shell执行是否成功、获取传入参数相关
$1 代表获取第一个参数
$2 代表获取第二个参数
$# 代表参数个数
$* 代表所有参数
#!/bin/bash
echo "参数1是:$1"
echo "参数2是:$2"
echo "是否执行成功: $?"
echo "外界传递的参数是:$*"
echo "外界传递的参数个数是:$#"
#执行shell命令
# /bin/bash test.sh 1 2 3
#打印结果如下:
参数1是:1
参数2是:2
是否执行成功: 0
外界传递的参数是:1 2 3
外界传递的参数个数是:3
for 循环
- Linux 打印
# 这是 Linux 的循环方式 执行会打印 1-20 的数字
# seq 1 20
- 定义 sh 进行打印 for循环 脚本如下:采用Linux内置的seq
、、是 Tab上的那个点
#!/bin/bash
for i in `seq 1 10`
do
echo "循环遍历:$i"
done
打印后循环打印 1-10
计算
- Linux 内置方式
# expr 1000 + 1
#打印如下
1001
- 新建 sh 进行 for 循环如下:
#!/bin/bash
a=0
for((n=0;n<100;n++))
do
a=`expr $n + $a`
done
echo "最终a的值为:$a"
打印结果:最终a的值为:4950
查找文件夹内文件
新建三个txt文件
# vim text01.txt
# vim text02.txt
# vim text03.txt
查找命令
# find . -name "*.txt"
#输出如下
./text01.txt
./text03.txt
./text02.txt
把文件打成压缩包
将 t1.txt 和 t2.txt 压缩成 hello.zip
# zip -r hello.zip t1.txt t2.txt
# tar czf all.taz *
czf cvf 也是压缩的方式
tar -czf t.tar.gz *.txt
while 循环
- 执行下面脚本输出 1 - 100
#!/bin/bash
i=0
while((i<100))
do
i=`expr $i + 1`
echo "循环 $i"
done
while 读取 read 手动输入控制台的信息
#!/bin/bash
while read line
do
echo "读取的值为: $line"
done
结果如下:
[root@VM_0_4_centos study]# sh test.sh
wwwww
读取的值为: wwwww
^C
if else 语句
#!/bin/bash
num1=100
num2=200
if(($num1>$num2))
then
echo "num1 比 num2 大"
else
echo "num1 比 num2 小"
fi
- 使用 if 判断文件夹是否存在
#!/bin/bash
# 判断当前文件夹下是否有 lu文件夹
if [ ! -d `pwd`/lu ]
then
# 没有则在当前文件夹下创建 lu 文件夹
mkdir -p `pwd`/lu
else
echo "存在 lu 文件夹"
fi
Linux 重定向
- Linux 都是文件形式的存在,即使是那个黑窗口,它是 0 号文件。我们将自己定义的 txt 定向到 0 号文件上。
cat 0< t1.txt