经典shell-脚本实例

合集下载

shell循环详解及实例

shell循环详解及实例

shell循环详解及实例⼀、条件选择、判断(if、case)1.1 if语句⽤法及实例当我们在脚本中遇到需要判断的时候,我们就可以⽤if语句来实现。

具体的语法如下:单分⽀if 判断条件;then 条件为真的分⽀代码 fi双分⽀if 判断条件; then条件为真的分⽀代码else条件为假的分⽀代码fi多分⽀if 判断条件1; then条件为真的分⽀代码elif 判断条件2; then条件为真的分⽀代码elif 判断条件3; then条件为真的分⽀代码else以上条件都为假的分⽀代码fi在多分⽀中,系统会逐条判断你写⼊的条件,第⼀次遇到“真”条件时,执⾏该分⽀,⽽后结束整个if语句。

注意:1、if和fi是成对出现的2、if语句可以嵌套。

Example:1)判断两个数字的⼤⼩1 #!/bin/bash2 #定义变量3 read -p "Please input the first num:" num14 read -p "Please input the second num:" num25 #判断数字是否符合标准6 if [[ $num1 =~ ^[0-9]+$ && $num2 =~ ^[0-9]+$ ]];then7 # 判断两个数字的⼤⼩并输出判断结果8 if [ $num1 -lt $num2 ];then9 echo "The num2 is biger than the num1"10 elif [ $num1 -eq $num2 ];then11 echo "Two numbers equal"12 else13 echo "The num1 is biger than the num2"14 fi15 else16 echo "Please enter the correct number"17 fi1819 #删除变量20 unset num1 num22)编写脚本/root/bin/createuser.sh,实现如下功能:使⽤⼀个⽤户名做为参数,如果指定参数的⽤户存在,就显⽰其存在,否则添加之;显⽰添加的⽤户的id号等信息1 #!/bin/bash2 #定义变量3 read -p "请输⼊⼀个⽤户名:" name4 #判断⽤户名是否存在5 if `id $name &> /dev/null`;then6 # 若存在,则输出ID等信息7 echo "⽤户存在,⽤户的ID信息为:`id $name`"8 else9 # 若不存在,则添加⽤户,设置密码为随机8位,下次登录时提⽰修改密码,同时显⽰ID等信息10 passwd=`cat /dev/urandom |tr -cd [:alpha:] |head -c8`11 `useradd $name &> /dev/null`12 `echo "$passwd" | passwd --stdin $name &> /dev/null`13 echo "⽤户名:$name 密码: $passwd" >> user.txt14 `chage -d 0 $name`15 echo "⽤户已添加,⽤户的ID信息为:`id $name` 密码为:$passwd"16 fi1718 #删除变量19 unset name passwd1.2 case⽤法及实例当涉及到多个条件匹配的时候,我们⽤if可能就很⿇烦了,这个时候,我们就可以⽤case来编写这个脚本。

Shell 经典实例

Shell 经典实例

Thizlinux 系统教程 Shell 经典实例----------------Milo经典小shell1 列目录树的shell脚本如下:#!/bin/sh# dtree: Usage: dtree [any directory]dir=${1:-.}(cd $dir; pwd)find $dir -type d -print | sort -f | sed -e "s,^$1,," -e "/^$/d" -e "s,[^/]*/([^/]*)$,`----1," -e "s,[^/]*/,| ,g"2 while中使用read (file是一个文件)cat file | while read linedoecho $lineecho " :: Please input any key(s):c"str4read=""while truedochr4read=`dd if=/dev/tty bs=1 count=1 2>/dev/null`str4read=$str4read$chr4readif [ "$chr4read" = "" ] ;then break; fidoneecho " :: |$str4read|"done3 将多个空格替换为字符sed 's/[ ][ ]*/ /g'如果空格与tab共存时用sed -e 's/[[:space:]][[:space:]]*/ /g' filename4用脚本实现分割文件#!/bin/bashif [ $# -ne 2 ]; thenecho 'Usage: split file size(in bytes)'exitfifile=$1size=$2if [ ! -f $file ]; thenecho "$file doesn't exist"exitfi#TODO: test if $size is a valid integerfilesize=`/bin/ls -l $file | awk '{print $5}'` echo filesize: $filesizelet pieces=$filesize/$sizelet remain=$filesize-$pieces*$sizeif [ $remain -gt 0 ]; thenlet pieces=$pieces+1fiecho pieces: $piecesi=0while [ $i -lt $pieces ];doecho split: $file.$i:dd if=$file of=$file.$i bs=$size count=1 skip=$i let i=$i+1doneecho "#!/bin/bash" > mergeecho "i=0" >> mergeecho "while [ $i -lt $pieces ];" >> mergeecho "do" >> mergeecho " echo merge: $file.$i" >> mergeecho " if [ ! -f $file.$i ]; then" >> mergeecho " echo merge: $file.$i missed" >> mergeecho " rm -f $file.merged" >> mergeecho " exit" >> mergeecho " fi" >> mergeecho " dd if=$file.$i of=$file.merged bs=$size count=1 seek=$i" >> merge echo " let i=$i+1" >> mergeecho "done" >> mergechmod u+x merge'5得到上月未日期,格式为YYYYMMDDget_lastday_of_lastmonth(){yy=`date +%Y`mm=`date +%m-1|bc`[ $mm -lt 1 ] && mm=12;yy=`expr $yy - 1`aaa=`cal $mm $yy`dd=`echo $aaa|awk '{print $NF}'`echo $yy$mm$dd}print $NF的$NF是打印最后一个列。

经典shell 脚本实例

经典shell 脚本实例

fi
done
#!/bin/bash
if [ $# -le 0 ]
then
echo "Not enough parameters"
exit 1
fi
#string="2 3 4 5 6"
#set string
sum=0
while [ $# -gt 0 ]
do
sum=`expr $sum + $1`
shift
印出该数值,然后再次要求用户输入数值。直到用户输入"end"停止。#!/bin/sh
unset var
while [ "$var" != "end" ]
do
echo -n "please input a number: "
ቤተ መጻሕፍቲ ባይዱ
read var
if [ "$var" = "end" ]
then
break
fi
Linux shell 脚本实例
1. 写一个脚本,利用循环计算 10 的阶乘#!/bin/sh
factorial=1
for a in `seq 1 10`
do
factorial=`expr $factorial \* $a`
done
echo "10! = $factorial"
2. 写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然后打
esac done #! /bin/sh a=10 b=20 c=30 value1=`expr $a + $b + $c` echo "The value of value1 is $value1" value2=`expr $c / $b` echo "The value of value2 is $value2" value3=`expr $c * $b` echo "The value of value3 is $value3" value4=`expr $a + $c / $b` echo "The value of value4 is $value4" var4=`expr $value4 - $value2` echo $var4

Shell脚本编写高级技巧使用循环结构处理多个文件

Shell脚本编写高级技巧使用循环结构处理多个文件

Shell脚本编写高级技巧使用循环结构处理多个文件Shell脚本是一种命令行解释器,它可以运行包含一系列命令的脚本文件。

在Shell脚本编写过程中,循环结构是非常重要的一个概念。

使用循环结构,我们可以有效地处理多个文件。

本文将介绍一些Shell脚本编写的高级技巧,来使用循环结构处理多个文件。

一、批量重命名文件在某些情况下,我们需要对多个文件进行批量重命名操作。

使用Shell脚本可以很方便地实现这个功能。

下面是一个示例代码,来演示如何批量重命名以.txt结尾的文件为以.bak结尾:```#!/bin/bashfor file in *.txtdomv "$file" "${file%.*}.bak"done```在这个脚本中,首先使用`for`循环遍历所有以.txt结尾的文件。

然后使用`mv`命令将文件重命名为以.bak结尾的文件。

二、批量复制文件有时候我们需要将一个目录下的文件复制到另一个目录,使用Shell 脚本编写可以很方便地实现这个功能。

下面是一个示例代码,来演示如何将一个目录下的所有文件复制到另一个目录:```#!/bin/bashsource_dir="/path/to/source/dir"target_dir="/path/to/target/dir"for file in $source_dir/*docp "$file" "$target_dir"done```在这个脚本中,首先通过变量`source_dir`指定源目录,通过变量`target_dir`指定目标目录。

然后使用`for`循环遍历所有源目录下的文件,并使用`cp`命令将文件复制到目标目录。

三、批量处理文件中的内容有时候我们需要对多个文件中的内容进行批量处理,使用Shell脚本编写可以很方便地实现这个功能。

shell读取excel代码实例

shell读取excel代码实例

shell读取excel代码实例在实际工作中,我们经常需要处理Excel表格中的数据。

而使用shell脚本来读取Excel表格可以提高工作效率。

下面将介绍一种使用shell脚本读取Excel表格的代码实例。

我们需要安装一个工具——`xls2csv`,它可以将Excel文件转换为CSV格式,方便我们在shell脚本中进行处理。

可以通过以下命令安装`xls2csv`:```shellsudo apt-get install catdoc```安装完成后,我们可以通过以下代码实现读取Excel表格并输出内容:```shell#!/bin/bash# 将Excel文件转换为CSV格式xls2csv input.xls > output.csv# 逐行读取CSV文件while IFS=',' read -r col1 col2 col3do# 输出每一行的内容echo "列1: $col1"echo "列2: $col2"echo "列3: $col3"done < output.csv```以上代码中,我们使用了`xls2csv`命令将Excel文件`input.xls`转换为CSV格式,并将转换后的内容保存到`output.csv`文件中。

然后,我们使用`while`循环逐行读取`output.csv`文件,并将每一行的内容分别赋值给变量`col1`、`col2`和`col3`。

最后,我们输出每一行的内容。

需要注意的是,以上代码假设Excel表格中有三列数据,分别对应变量`col1`、`col2`和`col3`。

如果Excel表格中的列数不同,需要调整代码中的变量个数和`echo`语句的输出。

为了使代码更加灵活,我们还可以将读取Excel表格的代码封装为一个函数,方便在其他脚本中调用。

以下是封装为函数的代码实例:```shell#!/bin/bash# 读取Excel表格的函数function read_excel() {local excel_file=$1# 将Excel文件转换为CSV格式xls2csv $excel_file > output.csv# 逐行读取CSV文件while IFS=',' read -r col1 col2 col3do# 输出每一行的内容echo "列1: $col1"echo "列2: $col2"echo "列3: $col3"done < output.csv}# 调用函数读取Excel表格read_excel input.xls```以上代码中,我们定义了一个名为`read_excel`的函数,该函数接受一个参数`excel_file`,用于指定要读取的Excel文件。

shell脚本100例、练习使用

shell脚本100例、练习使用

shell脚本100例、练习使⽤1、编写hello world脚本#!/bin/bashecho"hello world"2、通过位置变量创建linux系统账户和密码#!/bin/bash#$1是执⾏脚本第⼀个参数 $2是执⾏脚本第⼆个参数useradd "$1"echo"$2" | passwd --stdin "$1"#测试脚本[root@template-host sh1]# sh2.sh aaa 123Changing password for user aaa.passwd: all authentication tokens updated successfully.#测试登录[root@template-host sh1]# su - aaa[aaa@template-host ~]$3、每周五使⽤tar命令备份 /var/log下的所有⽇志⽂件#!/bin/bashtar -czPf log-`date +%y%m%d`.tar.gz /var/log #加P是因为如果不加会出现错误:tar: Removing leading `/' from member names date和+之间注意有空格。

修改系统参数[root@template-host sh1]# crontab -e00 03 * * 5 /data/sh1/3.sh4、⼀键部署LNMP(RPM包版本)#!/bin/bash#此脚本需要提前配置yum源,否则⽆法配置成功。

本脚本使⽤于7.4yum -y install httpdyum -y install mariadb mariadb-devel mariadb-serveryum -y install php php-mysqlsystemctl start httpd mariadb #启动httpd、mariadbsystemctl enable httpd mariadb #加⼊开机⾃启动systemctl status httpd mariadb #查看是否成功5、实时监控本机硬盘内存剩余空间,剩余内存空间⼩于500M,根分区剩余空间⼩于1000M时,发送警报信息到命令⾏#!bin/bash#提取分区剩余空间单位:kbdisk_size=$(df / | awk'/\//{print $4}')#提取内存空间单位Mmem_size=$(free -m | awk'/Mem/{print $4}')while :doif [ $disk_size -le 512000 -o $mem_size -le 1024 ];thenecho"警报:资源不⾜"sleep5fidone6、随机⽣成⼀个100以内的随机数,提⽰⽤户猜数字,提⽰⽤户猜⼤了、猜⼩了、猜对了,直⾄⽤户猜对,脚本结束。

shell读取excel代码实例

shell读取excel代码实例

shell读取excel代码实例以Shell读取Excel代码实例在实际工作中,我们经常会遇到需要读取Excel文件的情况,尤其是在数据处理和分析方面。

本文将介绍如何使用Shell脚本来读取Excel文件的内容,并提供一些代码实例。

一、安装依赖工具要在Shell脚本中读取Excel文件,我们需要安装一些依赖工具。

在Ubuntu系统下,可以使用以下命令来安装:```shellsudo apt-get install gnumeric```二、使用Shell脚本读取Excel文件1. 导出Excel文件为CSV格式我们需要将Excel文件导出为CSV格式,以便在Shell脚本中进行处理。

可以通过以下步骤来导出Excel文件:- 打开Excel文件,选择需要导出的工作表;- 点击“文件” -> “另存为” -> “CSV(逗号分隔)”;- 选择保存路径并点击“保存”。

2. 编写Shell脚本接下来,我们可以编写Shell脚本来读取CSV文件中的数据。

下面是一个简单的示例:```shell#!/bin/bash# 定义CSV文件路径csv_file="data.csv"# 读取CSV文件内容while IFS=',' read -r col1 col2 col3do# 输出每一列的内容echo "列1: $col1"echo "列2: $col2"echo "列3: $col3"done < "$csv_file"```在上述代码中,我们首先定义了CSV文件的路径,然后使用`while`循环逐行读取CSV文件的内容。

通过`IFS=','`设置列分隔符为逗号,然后将每一列的值赋给对应的变量(例如`col1`、`col2`、`col3`),最后输出每一列的内容。

dolphinscheduler shell使用实例

dolphinscheduler shell使用实例

dolphinscheduler shell使用实例DolphinScheduler 是一个开源的、分布式的、易扩展的任务调度系统。

在DolphinScheduler 中,Shell 脚本是一种常见的任务类型,用于执行一系列的命令行操作。

下面是DolphinScheduler 中使用Shell 脚本的简单示例:1. 创建一个Shell 脚本:假设你有一个名为`myscript.sh` 的Shell 脚本,内容如下:```bash#!/bin/bashecho "Hello from DolphinScheduler Shell Task"date```2. 上传Shell 脚本到DolphinScheduler:在DolphinScheduler 的任务管理界面中,创建一个新的Shell 任务,然后上传`myscript.sh`。

3. 配置Shell 任务参数:在DolphinScheduler 中,配置Shell 任务的参数,例如设置脚本的路径和其他相关的执行参数。

4. 定义调度规则:配置任务的调度规则,例如任务何时运行、运行频率等。

5. 保存并启动任务:保存配置并启动任务,DolphinScheduler 将按照配置的规则执行你的Shell 脚本。

请注意,这只是一个简单的示例。

在实际应用中,你可能需要更复杂的脚本和更精细的任务调度设置。

此外,DolphinScheduler 还支持并发执行、任务依赖、任务日志查看等功能,以支持更复杂的任务管理需求。

具体的使用细节可能会因DolphinScheduler 的版本和配置而有所不同,建议查阅DolphinScheduler 的官方文档以获取更详细的信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
# #answer="no" # #e cho "***********************************************************************" #e cho "Please press "Enter" key to continue"
#read #while [ $answer = "no" ] #do # echo # echo "1.Are you a boy ? (yes/no)" # read answer #done # #answer="no" # #until [ $answer = "yes" ] #do # echo # echo "2.Are you foolish ? (yes/no)" # read answer #done # #answer="no" # #until [ $answer = "yes" ] #do # echo # echo "3.Do you love me ? (yes/no)" # read answer #done # #e cho "***********************************************************************" #e cho #e cho "Now ! I know you are a foolish girl and you love me."
((i=i+1)) if [ $i -eq 4 ] then
echo "this time i is equal to 4" continue fi echo "this time i is not equal to 4" done echo "The command is $0" echo "The first argument is $1, the second argument is $2" echo "The entire command is $0 $1 $2" echo "And there are $# arguments" echo "The end of testing"
fi #clear #:trap "" 2 18 20 24 #e cho "***********************************************************************" #e cho " HI! You changed my root password" #e cho " This is a little punishment for you then you can use the shell" #e cho " You must answer my three questions and type "yes" or "no" to answer"
esac done #! /bin/sh a=10 b=20 c=30 value1=`expr $a + $b + $c` echo "The value of value1 is $value1" value2=`expr $c / $b` echo "The value of value2 is $value2" value3=`expr $c * $b` echo "The value of value3 is $value3" value4=`expr $a + $c / $b` echo "The value of value4 is $value4" var4=`expr $value4 - $value2` echo $var4
#break
done
# !/bin/bash
# list a content summary of a number of RPM packages
# USAGE: showrpm rpmfile1 rpmfile2 ...
# EXAMPLE: showrpm /cdrom/Thizlinux/RPMS/*.rpm
fi
done
#!/bin/bash
if [ $# -le 0 ]
then
echo "Not enough parameters"
exit 1
fi
#string="2 3 4 5 6"
#set string
sum=0
while [ $# -gt 0 ]
do
sum=`expr $sum + $1`
shift
则循环刚才的过程,否则退出。
#!/bin/bash
# favourite OS.
samli
2004.4.19
echo "What is your favourite OS?"
select var in "Linux" "UNIX" "Windows" "Other"; do
echo "You have selected $var."
if [ "$var" = "end" ]
then
break
fi
echo "var is $var"
done
3. 写一个脚本,利用循环和 continue 关键字,计算 100 以内能被 3 整除的数之和
4.一个函数,利用 shift 计算所有参数乘积,假设参数均为整数
#! /bin/sh
result=1
for rpmpackage in $*;
do
if [ -r "$rpmpackage" ];
then
echo "=============== $rpmpackage =============="
/bin/rpm -qip $rpmpackage
else
echo "ERROR: cannot read file $rpmpackage"
#! /bin/sh sum=0 for i in $*
ห้องสมุดไป่ตู้
do sum=`expr $sum + $i`
done echo $sum abc=123 echo $abc
###定义函数 example1() { abc=456 } ###调用函数 example1 echo $abc abc=234234 example1 echo $abc ###定义函数,使用参数 example2() { echo $1 echo $2 } ###调用函数,向它传递参数 example2 abc bbb example2 dksdfsdfsfaa bbb #!/bin/bash echo "please input a file name:" read file_name if [ -d $file_name ] then echo "$file_name is a directory" elif [ -f $file_name ] then echo "$file_name is a regular file" elif [ -c $file_name -o -b $file_name ] then echo "$file_name is a device file" else echo "$file_name is an unkonwn file" fi #! /bin/sh read first second third echo "the first parameter is $first" echo "the second parameter is $second" echo "the third parameter is $third" #! /bin/sh if [ $# -ne 2 ]; then
echo "var is $var"
done
//////////////////////////////////////////
#!/bin/sh
unset var
while [ "$var" != "end" ]
do
echo -n "please input a number: "
read var
Linux shell 脚本实例
1. 写一个脚本,利用循环计算 10 的阶乘#!/bin/sh
factorial=1
for a in `seq 1 10`
do
factorial=`expr $factorial \* $a`
done
echo "10! = $factorial"
2. 写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然后打
while [ $# -gt 0 ]
do
result=`expr $result * $1`
shift
done
echo $result
5.写一个脚本,可以根据参数文件名,以正确的参数调用 tar 来解压缩 tar.gz 或 tar.bz2 文件。
相关文档
最新文档