shell 脚本常用回顾~


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

未完待续

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章