分享shell编程中的几个小技巧

3 篇文章 0 订阅
3 篇文章 0 订阅

1、打印一些头信息
command  <<  dilimiter
……
……
dilimiter

以分界符号dilimiter中的内容作为命令的标准输入
常用在echo命令中,这样就避免了没输出一行就要使用一个echo命令,同时,输出格式的调整也相应变得简单了。
例如:  echo << something_message
**********************
hello, welcome to use my shell script

**********************
something_message

将在屏幕上输出:
**********************
hello, welcome to use my shell script
**********************

2、利用<<的分解符号性质还可以自动选择菜单或实现自动的ftp传输

也就是利用分解符号的性质自动选择菜单。
例如: ./menu_choose >>output_file 2>&1 <<Choose
2
3
Y
Choose
则自动在执行脚本的过程中一步步作出选择:2,3,Y
<<这种性质决定了它是理想的访问数据库的有用工具,可以用它来输入面对数据库提示时所作的各种选择。

3、创建一个长度为0的空文件

执行 > file_name 命令或 touch file_name 命令。

4、一些常用的shell变量

$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数(可大于9个)
$$ 脚本运行的当前进程的ID号
$! 后台运行的最后一个进程的ID号
$@ 与$#相同,但使用时加引号,并在引号中返回每个参数
$- 显示shell使用的当前选项
$?  显示最后命令的退出状态,0表示无错误(这个变量也常常用来打印输出,在脚本调试时标记某个shell命令或某个函数是否正确执行,但是要注意,$?记载的是最近的函数或命令的退出状态,因此打印时应该立即打印以获得正确的信息)
$0的使用
在变量中有一种位置变量$n,用来存放函数调用或脚本执行时传入的参数,其中$0表示函数名或脚本名,需要注意的是,这时的脚本名传递的是包含全路径的脚本名。从$1-$9表示传入的第一到第九个参数,这样的参数表示不能多于九个,如果多于九个,可以使用下面将要提到的shift指令来读取。
因为$0存放函数名或脚本名,因此我们可以通过echo $0来输出调用信息,但是,由于存放的是全路径名,我们可以利用一个shell命令来得到脚本名,basename $0 将得到$0中名字的部分,而与之相反的,dirname $0将得到$0中路径的部分。

5、Shift的运用

用head或tail指令指定查阅的行数
例如:查阅文件前20行:  head –20 file_name
      查阅文件后10行: tail –10 file_name

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是几个经典的Shell编程实例及其分析: 1. 统计文件行数 这个实例可以通过Shell脚本来实现,具体代码如下: ``` #!/bin/bash # 统计文件行数 if [ $# -ne 1 ]; then echo "Usage: $0 FILE" exit 1 fi file=$1 if [ ! -f $file ]; then echo "$file is not a file" exit 1 fi lines=$(wc -l $file | awk '{print $1}') echo "The number of lines in $file is: $lines" ``` 在这个脚本,首先判断命令行参数是否为1个,如果不是则输出帮助信息,退出程序。然后判断文件是否存在,如果不存在则输出错误信息,退出程序。最后使用wc和awk命令统计文件行数,并输出结果。 2. 自动备份MySQL数据库 这个实例可以通过Shell脚本来实现,具体代码如下: ``` #!/bin/bash # 自动备份MySQL数据库 USER=root PASSWORD=123456 DB_NAME=test BACKUP_DIR=/backup/mysql if [ ! -d $BACKUP_DIR ]; then mkdir -p $BACKUP_DIR fi DATE=$(date +%Y%m%d-%H%M%S) FILENAME=$BACKUP_DIR/$DB_NAME-$DATE.sql.gz mysqldump -u$USER -p$PASSWORD $DB_NAME | gzip > $FILENAME echo "Backup $DB_NAME to $FILENAME successfully." ``` 在这个脚本,首先定义了MySQL的用户名、密码、数据库名和备份目录等变量。然后判断备份目录是否存在,如果不存在则创建该目录。接着使用date命令获取当前时间,作为备份文件名的一部分。最后使用mysqldump命令备份MySQL数据库,并使用gzip命令压缩备份文件。 3. 监控磁盘空间 这个实例可以通过Shell脚本来实现,具体代码如下: ``` #!/bin/bash # 监控磁盘空间 THRESHOLD=90 df -h | tail -n +2 | while read line; do usage=$(echo $line | awk '{print $5}' | cut -d'%' -f1) mount=$(echo $line | awk '{print $6}') if [ $usage -gt $THRESHOLD ]; then echo "WARNING: $mount is ${usage}% full." fi done ``` 在这个脚本,首先定义了一个阈值变量THRESHOLD,用于判断磁盘空间使用率是否超过预设值。然后使用df命令获取磁盘空间信息,并使用tail和while命令对每个文件系统进行循环处理。在循环,使用awk和cut命令提取出磁盘空间使用率和挂载点,并判断磁盘空间使用率是否超过阈值,如果超过则输出警告信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值