Bash scripts-I

本文介绍了Bash脚本的基础知识,包括如何创建和运行脚本、常用的Bash命令及语法,如循环、条件判断、变量定义等。还提供了调试技巧和实际应用场景案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BASH = GNU Bourne-Again Shell,BASH 是 GNU 组织开发和推广的一个项目。
Bash脚本类似批处理,简单来讲就是把许多的指令集合在一起,并提供循环、
条件、判断等重要功能,语法简单实用,用以编写程序,大大简化管理员的操
作,并可以完成图形工具所无法实现的功能。

如何创建新shell脚本?

1创建包含bash命令的文本文件。文件的第一行应为:

#!/bin/bash
  1. 使文件可执行(使用chmod +x scripts)
  2. 将文件放置在用户的$PATH的目录中
~/bin – 用于用户的私有程序
/usr/local/bin – 本地开发、系统上的其他人使用的脚本
/usr/local/sbin - 本地开发、由root使用的脚本
直接运行脚本和使用source命令运行脚本是不同的!
脚本调试模式:
#!/bin/bash -x
# bash -x scripts

引用和转义

引用和转义在shell解析字符串时用于去除字符串中特殊字符或保留词语的特殊含义。这会导致按字
面处理字符串,而不是展开变量或将其部分内容视作具有特殊含义。
引用有三种类型:

弱引用
将字符串放置在双引号中,保留字符串中所有字符的文字值,$、`、\和!字符除外。换言之,变量
扩展和命令扩展在双引号内仍起作用。
echo “can I have a $FRUIT”
echo “The current time is $(date +%r).”

强引用
将字符串放置在单引号中,保留字符串中所有字符的文字值,同时禁用所有扩展:
echo “Make $$$ Fast”
rm 'untitled folder'

转义
非引用的\是转义字符。它保留了下一个字符的文字值。(例如,\$PATH是确切的字符串$PATH,而
不是PATH变量的内容。)
echo Make \$\$\$ Fast\!
ls untitled\ folder

Shell变量

shell变量用于为稍后在脚本中使用的名称指定值,并且仅限于shell命令行或从中声明变
量的脚本。

若要定义或指定值:
FRUIT=apple
若要参考或使用变量:
$FRUIT
${FRUIT}
命令替换
命令替换在子shell中执行指定命令并用命令输出替换脚本中的命令替换。
语法:
$(shell command)

这里写图片描述

算术运算符

算术运算符指的是可以在程序中实现加、减、乘、除等数学运算的运算符。

<VARIABLE>++ 增量后
<VARIABLE>-- 减量后
- 减法
+ 加法
** 幂运算
* 乘法
/ 除法
% 余数
+= 加等
-= 减等
10Shell计算命令:
用$[]表示数学运算。
# echo $[1+2]
# a=1; echo $[$[$a+1]*2]
用expr表示数学运算。
# echo `expr 1 + 2`let指示数学运算。
# let A=1+2
# echo $A
用(())表示数学运算。bash内建功能,效率高。
#!/bin/bash
for ((i=1;i<10;i++))
do
((j+=i))
done
echo $j

这里写图片描述

循环

for循环用于值列表中的相同命令的重复。
[root@server0 ~]# for HOST in host{1..3};do echo HOST;done  
host1  
host2  
host3  
[root@server0 ~]# for NUM in
(seq 2 2 8);do echo $NUM;done
2
4
6
8
这里写图片描述

循环与计算结合:

#!/bin/bash
for ((i=1;i<=100;i++))
do
((j+=i))
#j=`expr $j + $i`
#let j+=i
#j=$[j+=i]
done
echo $j
也可以写成一行:
# for((i=0; i<=100; i++));do j=`expr $j + $i` ;done;echo $j

这里写图片描述
这里写图片描述
13数据库备份示例:

#!/bin/bash
for DB in $(mysql -e "SHOW DATABASES;" -E -N | grep '^*' -v | grep 'schema$' -v)
do
    echo "Database "$DB" is Backingup"
    mysqldump $DB > /backup/$DB.$(date +%Y-%m-%d~%H)
done
    echo "Backup successful"
    echo " "
for DBSIZE in /backup/*
do
    SIZE=$(stat --printf "%s\n" $DBSIZE)
    echo "$DBSIZE	$SIZE"
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值