当前位置:首页 » 网页前端 » linux下shell脚本程序
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

linux下shell脚本程序

发布时间: 2022-11-04 16:56:43

1. 三个简单Linux的shell脚本程序编写

shell脚本和windows平台上的bat批处理是一样的,简化用户处理重复动作的操作,shell脚本由shell命令组成。

工具/原料
vim
ubuntu
方法/步骤
新建一个文件shell脚本一般用×.sh作为后缀当然勇气他的也可以。打开终端输入touch first.sh 新建一个名为first的shell脚本。
编写一个简单的linuxshell脚本
使用vim 编辑first.sh也可以用其他的文本编辑器,推荐使用vim
使用命令 vim first.sh打开,输入i进入编辑模式。
编写一个简单的linuxshell脚本
我们写入一个简单的shell脚本,注意第一行的代码解释器的指定,这里使用的是/bin/bash/ 解释器 也可用其他的根据个人情况自己选择。
脚本解释:
echo //显示一串字符并自动换行
read NAME //从屏幕获取一段字符,并赋予NAME
$NAME //取NAME变量的值
# //只用一个#表示注释文本
编写一个简单的linuxshell脚本
文件写完后按下esc键 退出插入模式,接着输入:wq 保存文本并退出文本编辑。
编写一个简单的linuxshell脚本
输入sh + 脚本名称 运行脚本,或给文件可运行权限 chmod +x 然后输入./first.sh运行脚本。

2. 三个简单Linux的shell脚本程序编写

shell脚本和windows平台上的bat批处理是一样的,简化用户处理重复动作的操作,shell脚本由shell命令组成。
工具/原料
vim
ubuntu
方法/步骤
新建一个文件shell脚本一般用×.sh作为后缀当然勇气他的也可以。打开终端输入touch
first.sh
新建一个名为first的shell脚本。
编写一个简单的linuxshell脚本
使用vim
编辑first.sh也可以用其他的文本编辑器,推荐使用vim
使用命令
vim
first.sh打开,输入i进入编辑模式。
编写一个简单的linuxshell脚本
我们写入一个简单的shell脚本,注意第一行的代码解释器的指定,这里使用的是/bin/bash/
解释器
也可用其他的根据个人情况自己选择。
脚本解释:
echo
//显示一串字符并自动换行
read
NAME
//从屏幕获取一段字符,并赋予NAME
$NAME
//取NAME变量的值
#
//只用一个#表示注释文本
编写一个简单的linuxshell脚本
文件写完后按下esc键
退出插入模式,接着输入:wq
保存文本并退出文本编辑。
编写一个简单的linuxshell脚本
输入sh
+
脚本名称
运行脚本,或给文件可运行权限
chmod
+x
然后输入./first.sh运行脚本。

3. Linux_Shell脚本编程之设置环境变量

1、export 变量名 = 变量值(功能描述:将shell变量输出为环境变量/全局变量)
2、source 配置文件 (功能描述:让修改后的配置信息立即生效)
3、echo $变量名 (功能描述:查询环境变量的值)

1、在/etc/profile文件中定义TOMCAT_HOME环境变量

2、查看环境变量TOMCAT的值

3、在另外一个shell程序中使用 TOMCAT_HOME

注意:文档多行注释

4. Linux Shell 脚本编程最佳实践

IT路边社

前言

与其它的编码规范一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。这份文档主要侧重于我们所普遍遵循的规则,对于那些不是明确强制要求的,我们尽量避免提供意见。

编码规范对于程序员而言尤为重要,有以下几个原因:

本文档中的准则致力于最大限度达到以下原则:

尽管本文档涵盖了许多基础知识,但应注意的是,没有编码规范可以为我们回答所有问题,开发人员始终需要再编写完代码后,对上述原则做出正确的判断。

:未明确指明的则默认为必须(Mandatory)

主要参考如下文档:

仅建议Shell用作相对简单的实用工具或者包装脚本。因此单个shell脚本内容不宜太过复杂。

在选择何时使用shell脚本时时应遵循以下原则:

可执行文件不建议有扩展名,库文件必须使用 .sh 作为扩展名,且应是不可执行的。

执行一个程序时,无需知道其编写语言,且shell脚本并不要求具有扩展名,所以更倾向可执行文件没有扩展名。

而库文件知道其编写语言十分重要,使用 .sh 作为特定语言后缀的扩展名,可以和其他语言编写的库文件加以区分。

文件名要求全部小写, 可以包含下划线 _ 或连字符 - , 建议可执行文件使用连字符,库文件使用下划线。

正例:

反例:

源文件编码格式为UTF-8。避免不同操作系统对文件换行处理的方式不同,一律使用 LF 。

每行最多不超过120个字符。每行代码最大长度限制的根本原因是过长的行会导致阅读障碍,使得缩进失效。

除了以下两种情况例外:

如出现长度必须超过120个字符的字符串,应尽量使用here document或者嵌入的换行符等合适的方法使其变短。

示例:

除了在行结束使用换行符,空格是源文件中唯一允许出现的空白字符。

对从来没有用到的或者被注释的方法、变量等要坚决从代码中清理出去,避免过多垃圾造成干扰。

Bash 是唯一被允许使用的可执行脚本shell。

可执行文件必须以 #!/bin/bash 开始。请使用 set 来设置shell的选项,使得用 bash echo "Process $: Done making $$$."
# 示例7:命令参数及路径不需要引号 grep -li Hugo /dev/ "$1"
# 示例8:常规变量用双引号,ccs可能为空的特殊情况可不用引号 git send-email --to "${reviewers}" ${ccs:+"--cc" "${ccs}"}
# 示例9:正则用单引号,$1可能为空的特殊情况可不用引号 grep -cP '([Ss]pecial||?characters*) ${1:+"$1"}
# 示例10:位置参数传递推荐带引号的"$@",所有参数作为单字符串传递用带引号的"$*" # content of t.sh func_t { echo num: $# echo args: 1:$1 2:$2 3:$3 }
func_t "$@" func_t "$*" # 当执行 ./t.sh a b c 时输出如下: num: 3 args: 1:a 2:b 3:c num: 1 args: 1:a b c 2: 3:

使用 $(command) 而不是反引号。

因反引号如果要嵌套则要求用反斜杠转义内部的反引号。而 $(command) 形式的嵌套无需转义,且可读性更高。

正例:

反例:

条件测试

使用 [[ ... ]] ,而不是 [ , test , 和 /usr/bin/[ 。

因为在 [[ 和 ]] 之间不会出现路径扩展或单词切分,所以使用 [[ ... ]] 能够减少犯错。且 [[ ... ]] 支持正则表达式匹配,而 [ ... ] 不支持。参考以下示例:

尽可能使用变量引用,而非字符串过滤。

Bash可以很好的处理空字符串测试,请使用空/非空字符串测试方法,而不是过滤字符,让代码具有更高的可读性。正例:

反例:

正例:

反例:

正例:

反例:

文件名扩展

当进行文件名的通配符扩展时,请指定明确的路径。

当目录中有特殊文件名如以 - 开头的文件时,使用带路径的扩展通配符 ./* 比不带路径的 * 要安全很多。

应该避免使用eval。

Eval在用于分配变量时会修改输入内容,但设置变量的同时并不能检查这些变量是什么。反例:

请使用进程替换或者for循环,而不是通过管道连接while循环。

这是因为在管道之后的while循环中,命令是在一个子shell中运行的,因此对变量的修改是不能传递给父shell的。

这种管道连接while循环中的隐式子shell使得bug定位非常困难。反例:

如果你确定输入中不包含空格或者其他特殊符号(通常不是来自用户输入),则可以用for循环代替。例如:

使用进程替换可实现重定向输出,但是请将命令放入显式子 shell,而非 while 循环创建的隐式子 shell。例如:

总是检查返回值,且提供有用的返回值。

对于非管道命令,使用 $? 或直接通过 if 语句来检查以保持其简洁。

例如:

当内建命令可以完成相同的任务时,在shell内建命令和调用外部命令之间,应尽量选择内建命令。

因内建命令相比外部命令而言会产生更少的依赖,且多数情况调用内建命令比调用外部命令可以获得更好的性能(通常外部命令会产生额外的进程开销)。

正例:

反例:

加载外部库文件不建议用使用.,建议使用source,已提升可阅读性。正例:

反例:

除非必要情况,尽量使用单个命令及其参数组合来完成一项任务,而非多个命令加上管道的不必要组合。常见的不建议的用法例如:cat和grep连用过滤字符串; cat和wc连用统计行数; grep和wc连用统计行数等。

正例:

除特殊情况外,几乎所有函数都不应该使用exit直接退出脚本,而应该使用return进行返回,以便后续逻辑中可以对错误进行处理。正例:

反例:

推荐以下工具帮助我们进行代码的规范:

原文链接:http://itxx00.github.io/blog/2020/01/03/shell-standards/

获取更多的面试题、脚本等运维资料点击: 运维知识社区 获取

脚本之---短信轰炸机

脚本之---QQ微信轰炸机

ansible---一键搭建redis5.0.5集群

elk7.9真集群docker部署文档

全球最全loki部署及配置文档

最强安全加固脚本2.0

一键设置iptbales脚本

5. Linux里面基本的shell脚本编写有哪些

shell脚本就是一些命令的集合。
举个例子,我想实现这样的操作:
1)进入到/tmp/目录;
2)列出当前目录中所有的文件名;
3)把所有当前的文件拷贝到/root/目录下;
4)删除当前目录下所有的文件。
简单的4步在shell窗口中需要你敲4次命令,按4次回车。这样是不是很麻烦?当然这4步操作非常简单,如果是更加复杂的命令设置需要几十次操作呢?那样的话一次一次敲键盘会很麻烦。所以不妨把所有的操作都记录到一个文档中,然后去调用文档中的命令,这样一步操作就可以完成。其实这个文档呢就是shell脚本了,只是这个shell脚本有它特殊的格式。《linux 就该这么学》
Shell脚本通常都是以.sh 为后缀名的,这个并不是说不带.sh这个脚本就不能执行,只是大家的一个习惯而已。所以,以后你发现了.sh为后缀的文件那么它一定会是一个shell脚本了。test.sh中第一行一定是 “#! /bin/bash” 它代表的意思是,该文件使用的是bash语法。如果不设置该行,那么你的shell脚本就不能被执行。’#’表示注释,在前面讲过的。后面跟一些该脚本的相关注释内容以及作者和创建日期或者版本等等。当然这些注释并非必须的,如果你懒的很,可以省略掉,但是笔者不建议省略。因为随着你工作时间的增加,你写的shell脚本也会越来越多,如果有一天你回头查看你写的某个脚本时,很有可能忘记该脚本是用来干什么的以及什么时候写的。所以写上注释是有必要的。另外系统管理员并非你一个,如果是其他管理员查看你的脚本,他看不懂岂不是很郁闷。该脚本再往下面则为要运行的命令了。

6. 求一个Linux的shell脚本或者程序

1.1 什么是shell?

Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。这种对话方式可以是交互式也可以是非交互式的

我们所输入的命令计算机是不识别的,这时就需要一种程序来帮助我们进行翻译,变成计算机能识别的二进制程序,同时又把计算机生成的结果返回给我们。

当前终端使用的哪种shell?

大多数linux发行版本默认shell使用的是bash

1.2 扩展:编程语言分类

编程语言主要用:低级语言和高级语言

1)低级语言:

机器语言:二进制语言

汇编语言:符号语言,使用助记符来代替操作码,也就是用符号代替机器语言的二进制码

它们都是面向机器的语言

2)高级语言:

它是比较接近自然语言或者说人类语言的一种编程,用人们能够容易理解的方式进行编写程序,

静态语言:编译型语言如:c 、c++ 、java,

动态语言:解释型语言如:php 、shell 、python 、perl

gcc编译器:(解释器) 将人类理解的语言翻译成机器理解的语言

静态语言和动态语言的区别:

静态语言编译时,变量的数据类型是确定的,静态语言对硬件更友好,运行效率更高。

动态语言,运行时确定变量的数据类型,且运行时可改变变量的类型。动态语言更简洁,对人类更友好,可以把更多精力放在业务逻辑上。

7. shell脚本是什么

当执行命令或程序语句是通过程序文件而不是命令行,那这个程序被称为Shell脚本。如果Shell脚本内置很多命令、语句及循环控制,然后一次性执行完毕,这种通过文件执行脚本的方式称为非交互方式。用户可以在Shell脚本中输入一系列命令及命令语句组合。这些命令、变量和流程控制语句等有机地结合在一起,就形成一个功能强大的Shell脚本。

8. Linux下如何执行Shell脚本

linux下可以有两种方式执行shell脚本:
1、用shell程序执行脚本:根据shell脚本的类型,选择shell程序,常用的有sh,bash,tcsh等(一般来说第一行#!/bin/bash里面指明了shell类型的,比如#!/bin/bash指明是bash,#!/bin/sh则是sh);然后输入命令(其中bash为shell的名称,myshell.sh则为要执行的代码):
bash
myshell.sh
2、直接执行脚本:
不过首先的加上可执行权限(也许要root权限,4情况而定),执行:

9. linux 下shell 编写脚本

第一题
#!/bin/bash
declare -i a=$1
declare -i sum=0
while [ "$a" -ne "0" ]
do
sum=$sum+$a%10
a=$a/10
done
echo "The result is $sum"
第二题
#!/bin/bash
declare -i a=$1
while [ $a -ne 0 ]
do
echo -n "$(($a%10))"
a=$a/10
done
echo
第三题
脚本命名为backupdaily.sh
在/etc/crontab里加入一行
0 2 * * * root ~/backup/backupdaily.sh
#!/bin/bash
day=`date +%Y%m%d`
tar -czf ~/backup/"$day".tar.gz ~/anydir
echo "$day: tar -czf ~/backup/$day.tar.gz ~/anydir" >> ~/backup/backuplog
第四题
以前没用过,试了下,manpage里就那几个参数
#例如提示“message” 持续三秒钟:
#notify-send "message" -t 3000

第五题
大哥你也不给sname和smark的格式,字段位置我就瞎猜啦
1.#cat sname ;cat smark
2.#cat sname | cut -d ' ' -f 2
3.#join -1 1 sname -2 1 smark
4.#cat sname smark | tr "[a-z]" "[A-Z]"
5 #cat inventory | cut -d ' ' -f 1,3
6#cat teaormilk | sed 's/tea/milk/g'
7#cat personame | sort | uniq
8#cat demo-file | grep "too"

话说悬赏分好少 - -!