当前位置:首页 » 编程软件 » shell脚本经典实例100

shell脚本经典实例100

发布时间: 2023-03-22 00:23:23

㈠ 编写一个SHELL脚本程序计算1到100的和

#!/银销bin/锋迟游旦春bash
j=0
for ((i=1;i<=100;i++));do
j=$(($i+$j))
done
echo $j

㈡ shell脚本中使用for.do循环语句列出从1到100的数字中能够被3整除的数求出他们的和并输出文件命名为sum.sh

#!/bin/bash
sum=0
for i in {1..100}
do
if [ $(( $i % 3 )) -eq 0 ]
then
echo $i
sum=$(( $sum + $i ))
fi
done
echo "sum is: $sum"

保存为sum.sh

㈢ shell脚本

Shell脚本基本知识
概述:shell其实是内核与用户之间的一个接口,
shell脚本
如果有一系列经常使用的linux命令,你可以把它们存储在一个文件肿。shenll可以读取这个文件,并执行其中的命令。这样的文件成为脚本文件。
执行shell脚本
要创建一个shell脚本,你要使用任何编辑器比如vi在文本文件中编写他。
为了使用bashshell赖执行脚本magic,其命令是:bashmagic或者./magic
echo命令:
echo“!”
屏幕上就会回显“!”
#符号
用于在shell脚本肿可以包含注解入口
echo“hello”
#thisisacommentline.thiswouldnotproceanyoutput!
echo“world!”
第二行是一个注解的例子。它将被shell忽略,而且不产生任何消息
变量:
可以在任何时间通过简单的赋值来创建。
语法:
<variablename>-<value>
Linux中的所有变量都被当作字符串
引用变量:
$符号用于引用一个变量的内容
variable1=${variable2}
读入值给变量
在执行shell脚本时,shell还允许用户直接从键盘读入一个值给变量,还可以使用read命令来作。
$readfname
本地和全局shell变量
局部变量
当引用shell时,只有创建它的shell能够知道变量的存在
全局变量
称为子shell
shell中创建的变量局部于创建它的shell,除非使用export命令特别指出是全局的。
环境变量:
通过改变这些变量的值,用户能够定制此环境
一些环境变量的例子是HOME,PATH,PS1,PS2,LOGNAME,SHLVL,及SHELL
HOME变量
Linux系统中的每个用户都有一个相关的称作HOME的目录
当一个用户登录后,进入相应的HOME的目录
$echo$HOME
PATH变量
包含一列用冒号定界的目录的路径名字,便于可执行程序的搜索。
PS1变量
PS1(PromptString1)变量包含了shell提示符,$符号
$PS1=“HELLO>”
HELLO>
PS2变量
是为第二个提示符设置值的环境变量
LOGNAME变量
包含用户的注册名字
$echo“${LOGNAME}”
SHLVL变量
该变量包含当前工作的shelllevel
SHELL变量
环境变量存储了用户缺省的shell
env命令
可用来查看所有的已移出的环境变量表和它们各自的值!
命令替换
在单个命令行中使用多个命令的另外一种方法(非Pipes)是通过命令替换
echo“thedatais`date`”
expr命令
用于求之算术表达式。该命令的输出被送到标准输出
$expr4+5
将在屏幕上显示9
算术展开:
你可以在$((…))中括一个表达式,用下面的命令来计算它的值;
$((expression))
example1
编写一个shell脚本用于计算呼叫中心未应答的询问的数量。该脚本应该接受一天那所报告的询问的总数和应答的询问的数量,以便计算未应答的询问的数量。
所有未应答的询问总数=所有询问的总数-应答的询问的数量
<!--[if!supportLists]-->※<!--[endif]-->※※※※※※※※※※※※※※※※※※※※※※※
条件执行
test和[]
求值表达式,并返回true(0)或false()
数值测试:
-eq等于则为真
-ne不等于则为真
-gt大于则为真
-ge大于等于则为真
-lt小于则为真
-le小于等于则为真
if构造
Linuxshell提供了循环和判定的构造,可以在shell脚本中使用
算术测试
结合if构造,它可以用于测试变量的数字值
串测试
test命令也可以用于字符串
=等于则为真
!=不相等则为真
-z字符串长度为零则为真
-n字符串长度不为零则为真
文件测试
test命令也可以用于检查文件的状态
-e文件存在则为真
-r文件存在并且可读则为真
-w文件存在并且可写则为真
-x文件存在并且可执行则为真
-s文件存在并且至少有一个字符则为真
-d文件存在并且为目录则为真
-f文件存在并且为普通文件则为真
-c文件存在并且为字符型文件则为真
-b文件存在并且为块特殊文件则为真
-a并且-o或者!非
exit命令
用于终止shell脚本的执行并返回到$提示符下
case。。。esac
shell脚本中使用的这个构造依据变量的值而执行一组特定指令
当变量的值和其中的一个值匹配的时候,就执行写在该值下的一组命令。
example3
迭代
while构造
while<条件>
do
<命令(s)>
done
只有条件为真的时候,才能执行do与done之间的命令
until构造
until循环构造的求值模式于while循环相反
until循环将继续执行直到求值的条件为真的时候
for构造
forvariable_namein<list_of_values>
do

done
for循环取一列值作为输入并对循环中每个值执行循环
break和contineu命令
同其他语言中的用法
example4
控制进程的执行
请求后台处理
用于请求后台进程的符号是(&)
$wctempfile&
[1]2082
$vinewfile
检查后台进程
ps(进程状态)命令为每个当前的活动的每个进程产生一行入口。
终止后台进程
可用kill,如下所示
kill278
查看完成一个命令所花的时间
你可以使用time命令来查看一个命令从开始到结束所花的时间
timefine/etc–name“passwd”2>/dev/null/dev/null表明忽略错误信息。
管道的介绍
垂直条(|)是管道字符
它只是shell:“|”前面命令的输出作为“|”之后命令的输入发送
ls–l|more
用管道组合命令,功能强大

㈣ 请用Shell脚本编写程序,将100以内能被3或7整除的数的和显示出来.

#!/bin/bash
sum=0
foriin`seq1100`;do
a=$[$i%3]
b=$[$i%7]
if[$a-eq0]||[$b-eq0];then
sum=$[$sum+$i]
fi
done
echo$sum

㈤ 编写shell的脚本实现1到100的相加,并输出如下格式 1+2+3+........+100=

COUNTER=1
SUM=0
printf "启银%d" $COUNTER
while [ $COUNTER -le 100 ]do
SUM='expr $COUNTER+$SUM'
printf "+%d" $COUNTER
COUNTER='expr $COUNTER+1'
done
printf "=%d\衡旁坦咐桐n" $SUM

㈥ 编写Shell脚本文件,在当前目录下建立100个目录,并给出执行该文件的步骤

用bash不用写脚本,一行命令就成

printf 'user%01d\n' {1..100} | xargs mkdir

nc10@your-5554c55be4 ~
$ cd tmp

nc10@your-5554c55be4 ~/tmp
$ ls

nc10@your-5554c55be4 ~/tmp
$ pwd
/home/nc10/tmp

nc10@your-5554c55be4 ~/tmp
$ ls

nc10@your-5554c55be4 ~/tmp
$ printf 'user%01d\n' {1..100} | xargs mkdir

nc10@your-5554c55be4 ~/tmp
$ ls
user1/ user20/ user32/ user44/ user56/ user68/ user8/ user91/
user10/ user21/ user33/ user45/ user57/ user69/ user80/ user92/
user100/ user22/ user34/ user46/ user58/ user7/ user81/ user93/
user11/ user23/ user35/ user47/ user59/ user70/ user82/ user94/
user12/ user24/ user36/ user48/ user6/ user71/ user83/ user95/
user13/ user25/ user37/ user49/ user60/ user72/ user84/ user96/
user14/ user26/ user38/ user5/ user61/ user73/ user85/ user97/
user15/ user27/ user39/ user50/ user62/ user74/ user86/ user98/
user16/ user28/ user4/ user51/ user63/ user75/ user87/ user99/
user17/ user29/ user40/ user52/ user64/ user76/ user88/
user18/ user3/ user41/ user53/ user65/ user77/ user89/
user19/ user30/ user42/ user54/ user66/ user78/ user9/
user2/ user31/ user43/ user55/ user67/ user79/ user90/

nc10@your-5554c55be4 ~/tmp
$

或者用seq

mkdir $(seq -f 'user%01g' 1 100)

nc10@your-5554c55be4 ~/tmp
$ ls

nc10@your-5554c55be4 ~/tmp
$ mkdir $(seq -f 'user%01g' 1 100)

nc10@your-5554c55be4 ~/tmp
$ ls
user1/ user20/ user32/ user44/ user56/ user68/ user8/ user91/
user10/ user21/ user33/ user45/ user57/ user69/ user80/ user92/
user100/ user22/ user34/ user46/ user58/ user7/ user81/ user93/
user11/ user23/ user35/ user47/ user59/ user70/ user82/ user94/
user12/ user24/ user36/ user48/ user6/ user71/ user83/ user95/
user13/ user25/ user37/ user49/ user60/ user72/ user84/ user96/
user14/ user26/ user38/ user5/ user61/ user73/ user85/ user97/
user15/ user27/ user39/ user50/ user62/ user74/ user86/ user98/
user16/ user28/ user4/ user51/ user63/ user75/ user87/ user99/
user17/ user29/ user40/ user52/ user64/ user76/ user88/
user18/ user3/ user41/ user53/ user65/ user77/ user89/
user19/ user30/ user42/ user54/ user66/ user78/ user9/
user2/ user31/ user43/ user55/ user67/ user79/ user90/

nc10@your-5554c55be4 ~/tmp
$

㈦ 学透shell 带你写常用的100个 shell 脚本(一)定时删除过期文件

本文已参与“新人创作礼”活动,一起开启掘金创作之路。

需要清理服务器中过期的文件、日志、临时压缩未清理的垃圾文件、过久的备份文件,手动删除过于繁琐,可以通过此脚本进行删除,如有不同场景,适量修改即可

目标:删除 /home/logs/下超过30天的日志文件,文件名称为xxxx-service-2022-06-18-20.out

如果只需单次清理,只需要执行删除命令即可

添加定时任务,设置每个月1号晚上4点10分执行脚本.当然你也可以根据你自己的需求去整

OK ,此次结束 🔚。

㈧ 编写shell脚本sum求1-100累加和

sum=0
for((i=1;i<=100;i++));do
sum=$((i+sum))
done
echo$sum

很多很多者老种方法,可首灶升辩毕以网上搜一下贴

㈨ shell程序实现1-2+3-4……-100求和

flag=1;

sum=0;

for((i=1;i<=100;i++));do

add=`expr $flag * $i

sum=`expr $sum + $add`

flag=`expr 0 - $flag`

done

echo $sum

或:

#include<iostream>

using namespace std;

int main()

{

int sum=0;

int i;

for(i=1;i<=100;i++)

sum=sum+i;

cout<<"1+2+3+...+100="<<sum<<endl;

}

(9)shell脚本经典实例100扩展阅读:

本示例使用Shell函数来完成一个用户指定的应用程序。将第二个参数值设成1,可让该模中盯培埋程序以正常大小的窗口完成,并且拥有焦点。 Dim RetValRetVal = Shell("C:WINDOWSCALC.EXE", 1) ' 完成Calculator。

使用shell脚本调用linux中当前时间,并记录在log文件中,10秒后再次记录时间。

date>>/tmp/data.log

sleep10

date>>/tmp/data.log

参考旦和资料来源:网络-shell

㈩ 分享70个经典的 Shell 脚本面试题与答案

1) 如何向脚本传递参数 ?

./script argument

2) 如何在脚本中使用参数 ?

第一个参数 : $1 ,第二个参数 : $2

cp $1 $2

3) 如何计算传递进来的参数 ?

$#

4) 如何在脚本中获取脚本名称 ?

$0

5) 如何检查之前的命令是否运行成功 ?

$?

6) 如何获取文件的最后一行 ?

tail-1

7) 如何获取文件的第一行 ?

head-1

8) 如何获取一个文件每一行的第三个元素 ?

awk'{print $3}'

9) 假如文件中每行第一个元素是 FIND,如何获取第二个元素

awk'{ if ($1 == "FIND") print $2}'

10) 如何调试 bash 脚本

将 -xv 参数加到 #!/bin/bash 后

例子:

#!/bin/bash –xv

11) 举例如何写一个函数 ?

12) 如何向连接两个字符串 ?

输出

HelloWorld

13) 如何进行两个整数相加 ?

14) 如何检查文件系统中是否存在某个文件 ?

15) 写出 shell 脚本中所有循环语法 ?

for 循环 :

while 循环 :

until 循环 :

16) 每个脚本开始的 #!/bin/sh 或 #!/bin/bash 表示什么意思 ?

这一行说明要使用的 shell 。 #!/bin/bash 表示脚本使用 /bin/bash 。对于 python 脚本,就是 #!/usr/bin/python 。

17) 如何获取文本文件的第 10 行 ?

head -10 file|tail -1

18) bash 脚本文件的第一个符号是什么

#

19) 命令: [ -z "" ] && echo 0 || echo 1 的输出是什么

0

20) 命令 “export” 有什么用 ?

使变量在子 shell 中可用。

21) 如何在后台运行脚本 ?

nohup command&

大部分时间我们可能是远程使用Linux,我碰到过由于网络断线使得在后台运行的 command & 没了...

22) "chmod 500 script" 做什么 ?

使脚本所有者拥有可执行权限。

23) ">" 做什么 ?

重定向输出流到文件或另一个流。

24) & 和 && 有什么区别

25) 什么时候要在 [ condition ] 之前使用 “if” ?

当条件满足时需要运行多条命令的时候。

26) 命令: name=John && echo "My name is $name" 的输出是什么

My name is John

27) bash shell 脚本中哪个符号用于注释 ?

#

28) 命令: echo ${new:-variable} 的输出是什么

variable

29) ' 和 " 引号有什么区别 ?

30) 如何在脚本文件中重定向标准输出和标准错误流到 log.txt 文件 ?

在脚本文件中添加 "exec >log.txt 2>&1" 命令。

31) 如何只用 echo 命令获取字符串变量的一部分 ?

例子:

32) 如果给定字符串 variable="User:123:321:/home/dir" ,如何只用 echo 命令获取 home_dir ?

echo ${variable#*:*:*:}

echo ${variable##*:}

33) 如何从上面的字符串中获取 “User” ?

echo ${variable%:*:*:*}

echo ${variable%%:*}

34) 如何使用 awk 列出 UID 小于 100 的用户 ?

awk -F: '$3<100' /etc/passwd

35) 写程序为用户计算主组数目并显示次数和组名

36) 如何在 bash shell 中更改标准的域分隔符为 ":" ?

IFS=":"

37) 如何获取变量长度 ?

${#variable}

38) 如何打印变量的最后 5 个字符 ?

echo ${variable: -5}

39) ${variable:-10} 和 ${variable: -10} 有什么区别?

40) 如何只用 echo 命令替换字符串的一部分 ?

echo ${variable//pattern/replacement}

41) 哪个命令将命令替换为大写 ?

tr '[:lower:]' '[:upper:]'

42) 如何计算本地用户数目 ?

wc -l /etc/passwd|cut -d" " -f1 或者 cat /etc/passwd|wc -l

43) 不用 wc 命令如何计算字符串中的单词数目 ?

44) "export $variable" 或 "export variable" 哪个正确 ?

export variable

45) 如何列出第二个字母是 a 或 b 的文件 ?

ls -d ?[ab]*

46) 如何将整数 a 加到 b 并赋值给 c ?

47) 如何去除字符串中的所有空格 ?

echo $string|tr -d " "

48) 重写这个命令,将输出变量转换为复数: item="car"; echo "I like $item" ?

item="car"; echo "I like ${item}s"

49) 写出输出数字 0 到 100 中 3 的倍数(0 3 6 9 …)的命令 ?

for i in {0..100..3}; do echo $i; done

for (( i=0; i<=100; i=i+3 )); do echo "Welcome $i times"; done

50) 如何打印传递给脚本的所有参数 ?

echo $*

echo $@

51) [ $a == $b ] 和 [ $a -eq $b ] 有什么区别

52) = 和 == 有什么区别

53) 写出测试 $a 是否大于 12 的命令 ?

[ $a -gt 12 ]

54) 写出测试 $b 是否小于等于 12 的命令 ?

[ $b -le 12 ]

55) 如何检查字符串是否以字母 "abc" 开头 ?

[[ $string == abc* ]]

56) [[ $string == abc* ]] 和 [[ $string == "abc*" ]] 有什么区别

57) 如何列出以 ab 或 xy 开头的用户名 ?

egrep "^ab|^xy" /etc/passwd|cut -d: -f1

58) bash 中 $! 表示什么意思 ?

后台最近执行命令的 PID.

59) $? 表示什么意思 ?

前台最近命令的结束状态。

60) 如何输出当前 shell 的 PID ?

echo $$

61) 如何获取传递给脚本的参数数目 ?

echo $#

62) $* 和 $@ 有什么区别

63) 如何在 bash 中定义数组 ?

array=("Hi" "my" "name" "is")

64) 如何打印数组的第一个元素 ?

echo ${array[0]}

65) 如何打印数组的所有元素 ?

echo ${array[@]}

66) 如何输出所有数组索引 ?

echo ${!array[@]}

67) 如何移除数组中索引为 2 的元素 ?

unset array[2]

68) 如何在数组中添加 id 为 333 的元素 ?

array[333]="New_element"

69) shell 脚本如何获取输入的值 ?

a) 通过参数

./script param1 param2

b) 通过 read 命令

read -p "Destination backup Server : " desthost

70) 在脚本中如何使用 "expect" ?

热点内容
木头创意解压 发布:2024-05-07 00:11:55 浏览:215
密码都能设置什么 发布:2024-05-07 00:02:30 浏览:741
兰州大学网络服务器ip地址 发布:2024-05-06 23:44:09 浏览:429
安卓手机为什么这么香 发布:2024-05-06 23:33:19 浏览:623
安卓微信深色模式是什么意思 发布:2024-05-06 23:14:41 浏览:686
脚本样本 发布:2024-05-06 23:03:41 浏览:630
sqlserver导出 发布:2024-05-06 23:02:16 浏览:808
phpredis操作 发布:2024-05-06 22:56:24 浏览:584
查看qq加密相册软件 发布:2024-05-06 22:45:36 浏览:619
达芬奇密码电影解说讲的是什么 发布:2024-05-06 22:26:41 浏览:144