当前位置:首页 » 编程软件 » bash脚本执行

bash脚本执行

发布时间: 2023-01-19 01:46:38

linux下怎么运行bash脚本

linux下运行bash脚本的方法如下:

  1. 首先在桌面右键点击,选择在终端中打开,打开命令行;

  2. 在命令行中输入 cd 脚本路径,进入脚本所在目录;

  3. 使用chmod +x 脚本名命令给文件添加可执行权限;

  4. 使用sh 脚本名或者 ./脚本名的方法来运行bash脚本。

② Bash 脚本进阶,经典用法及其案例

前言:在linux中,Bash脚本是很基础的知识,大家可能一听脚本感觉很高大上,像我当初刚开始学一样,感觉会写脚本的都是大神。虽然复杂的脚本是很烧脑,但是,当我们熟练的掌握了其中的用法与技巧,再多加练习,总有一天也会成为得心应手的脚本大神。脚本在生产中的作用,想必我我不说,大家也都知道,脚本写的6,可以省下很多复杂的操作,减轻自己的工作压力。好了,废话不多说,接下来,就是Bash脚本的用法展示。

(1)用法格式

if 判断条件 1 ; then

条件为真的分支代码

elif 判断条件 2 ; then

条件为真的分支代码

elif 判断条件 3 ; then

条件为真的分支代码

else

以上条件都为假的分支代码

fi

逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if。

(2)经典案例:

① 判断年纪

分析:请输入年纪,先判断输入的是否含有除数字以外的字符,有,就报错;没有,继续判断是否小于150,是否大于18。

② 判断分数

分析:请输入成绩,先判断输入的是否含有除数字以外的字符,有,就报错;没有,继续判断是否大于100,是否大于85,是否大于60。

(1)用法格式

case $name in;

PART1)

cmd

;;

PART2)

cmd

;;

*)

cmd

;;

esac

注意:case 支持glob 风格的通配符:

*: 任意长度任意字符

?: 任意单个字符

[] :指定范围内的任意单个字符

a|b: a 或b

(2)案例:

判断yes or no

分析:请输入yes or no,回答Y/y、yes各种大小写组合为yes;回答N/n、No各种大小写组合为no。

(1)用法格式

① for name in 列表 ;do

循环体

done

for (( exp1; exp2; exp3 )) ;do

cmd

done

exp1只执行一次,相当于在for里嵌了while

③ 执行机制:依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束

列表的表示方法,可以glob 通配符,如{1..10} 、*.sh ;也可以变量引用,如: `seq 1 $name`

(2)案例

① 求出(1+2+...+n)的总和

分析:sum初始值为0,请输入一个数,先判断输入的是否含有除数字以外的字符,有,就报错;没有判断是否为0,不为0进入for循环,i的范围为1~输入的数,每次的循环为sum=sum+i,循环结束,最后输出sum的值。

② 求出(1+2+...+100)的总和

分析:i=1,num=0;当i<=100,进入循环,若i 2取余=1,则sum=sum+i,i=i+1。

(1)用法格式

while 循环控制条件 ;do

循环

done

循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true” ,则执行一次循环;直到条件测试状态为“false” 终止循环

(2)特殊用法(遍历文件的每一行):while read line; do控制变量初始化循环体done < /PATH/FROM/SOMEFILE或 cat /PATH/FROM/SOMEFILE | while read line; do循环体done依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line

(3)案例:

① 100以内所有正奇数之和

分析:sum初始值为0,i的初始值为1;请输入一个数,先判断输入的是否含有除数字以外的字符,有,就报错;没有当i<100时,进入循环,判断 i 2取余 是否不为0,不为0时为奇数,sum=sum+i,i+1,为0,i+1;循环结束,最后输出sum的值。

(1)用法

unitl 循环条件 ;do

循环

done

进入条件:循环条件为true ;退出条件:循环条件为false;刚好 和while相反 ,所以不常用,用while就行。

(2)案例

监控xiaoming用户,登录就杀死

分析:每隔0.5秒扫描,直到发现xiaoming用户登录,杀死这个进程,退出脚本,用于监控用户登录。

(1)用法

select variable in list

do

循环体命令

done

① select 循环主要用于创建菜单,按数字顺序排列的示菜单项将显示在标准错误上,并显示PS3 提示符,等待用户输入

② 用户输入菜单列表中的某个数字,执行相应的命令

③ 用户输入被保存在内置变量 REPLY 中

④ select 是个无限循环,因此要记住用 break 命令退出循环,或用 exit 按 命令终止脚本。也可以按 ctrl+c退出循环

⑤ select 和 经常和 case 联合使用

⑥ 与for循环类似,可以省略 in list, 此时使用位置参量

(2)案例:

生成菜单,并显示选中的价钱

分析:PS3是select的提示符,自动生成菜单,选择5break退出循环。

(1)语法

continue [N]:提前结束 第N层的本轮 循环,而直接进入下一轮判断;最内层为第1层

break [N]:提前结束 第N层 循环,最内侧为第1层

例:while CONDTITON1; doCMD1if CONDITION2; thencontinue / breakfiCMD2done (2)案例:

① 求(1+3+...+49+53+...+100)的和

分析:做1+2+...+100的循环,当i=51时,跳过这次循环,但是继续整个循环,结果为:sum=2449

② 求(1+3+...+49)的和

分析:做1+2+...+100的循环,当i=51时,跳出整个循环,结果为:sum=625

(1)作用

用于将参数列表list左移指定次数,最左端的那个参数就从列表中删除,其后边的参数继续进入循环

(2)案例:

① 创建指定的多个用户

分析:如果没有输入参数(参数的总数为0),提示错误并退出;反之,进入循环;若第一个参数不为空字符,则创建以第一个参数为名的用户,并移除第一个参数,将紧跟的参数左移作为第一个参数,直到没有第一个参数,退出。

② 打印直角三角形的字符

true 永远返回成功结果

: null command ,什么也不干,返回成功结果

false 永远返回错误结果

创建无限循环

while true ;do

循环体

done

(1)用法

for name in 列表 ;do

{

循环体

}&

done

wait

(2)实例:

搜寻自己指定ip(子网掩码为24的)的网段中,UP的ip地址

分析:请输入一个IP地址例192.168.37.234,如果格式不是0.0.0.0 则报错退出;正确则进入循环,IP变量的值为192.168.37. i的范围为1-254,并行ping 192.168.37.1-154,ping通就输出此IP为UP。直到循环结束。

trap ' 触发指令' 信号,自定义进程收到系统发出的指定信号后,将执行触发指令,而不会执行原操作

trap '' 信号,忽略信号的操作

trap '-' 信号,恢复原信号的操作

trap -p ,列出自定义信号操作

信号可以3种表达方法:信号的数字2、全名SIGINT、缩写INT

1) SIGHUP: 无须关闭进程而让其重读配置文件

2) SIGINT: 中止正在运行的进程;相当于Ctrl+c

3) SIGQUIT: 相当于ctrl+

9) SIGKILL: 强制杀死正在运行的进程

15) SIGTERM :终止正在运行的进程(默认为15)

18) SIGCONT :继续运行

19) SIGSTOP :后台休眠

9 信号,强制杀死,捕获不住

① 打印0-9,ctrl+c不能终止

分析:i=0,当i<10,每休眠1秒,i+1,捕获2信号,并执行echo press ctrl+c

② 打印0-3,ctrl+c不能终止,3之后恢复,能终止

分析:i=0,当i3时,解除捕获2信号。

1、生成随机字符 cat /dev/urandom

生成8个随机大小写字母或数字 cat /dev/urandom |tr -dc [:alnum:] |head -c 8

2、生成随机数 echo $RANDOM

确定范围 echo $[RANDOM%7] 随机7个数(0-6)

echo $[$[RANDOM%7]+31] 随机7个数(31-37)

3、echo打印颜色字

echo -e "33[31malong33[0m" 显示红色along

echo -e "33[1;31malong33[0m" 高亮显示红色along

echo -e "33[41malong33[0m" 显示背景色为红色的along

echo -e "33[31;5malong33[0m" 显示闪烁的红色along

color=$[$[RANDOM%7]+31]

echo -ne "33[1;${color};5m*33[0m" 显示闪烁的随机色along

③ linux shell脚本执行命令详解

在Linux下,如果你需要执行shell脚本,那么应该使用那个命令呢?下面由我为大家整理了linux shell脚本执行命令的相关知识,希望对大家有帮助!

linux shell脚本执行

linux shell脚本执行方法一: 切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:

cd /data/shell

./hello.sh

./的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录(/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo $PASH 命令。现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执行。

linux shell脚本执行方法二: 以绝对路径的方式去执行bash shell脚本:

/data/shell/hello.sh

linux shell脚本执行方法三: 直接使用bash 或sh 来执行bash shell脚本:

cd /data/shell

bash hello.sh

cd /data/shell

sh hello.sh

注意,若是以方法三的方式来执行,那么,可以不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)。因为方法三是将hello.sh作为参数传给sh(bash)命令来执行的。这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限。那么不用指定bash路径自然也好理解了啊。

linux shell脚本执行方法四: 在当前的shell环境中执行bash shell脚本:

cd /data/shell

. hello.sh

cd /data/shell

source hello.sh

前三种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。而方法四则是在当前shell中执行的。

④ 10 分钟学会Linux常用 bash命令

显示所有的环境变量,如果你想获取某个变量的详细信息,使用 echo $VARIABLE_NAME .

Example:

whereis使用系统自动构建的数据库来搜索可执行文件,源文件和手册页面。

Example:

它在环境变量PATH指定的目录中搜索可执行文件。此命令将打印可执行文件的完整路径。

Example:

清除窗口上的内容。

列出您的文件。 ls 有很多选项: -l 列出“长格式”的文件,其中包含文件的确切大小,拥有该文件的人员,有权查看该文件,以及何时进行上次修改。 -a 列出所有文件,包括隐藏文件。有关此命令的更多信息,请检查此链接。

Example:

创建或更新您的文件。

Example:

它可以在UNIX或Linux下用于以下目的。

显示文件的第一部分(用空格移动并键入q以退出)。

输出文件的前10行。

输出最后10行文件。用于-f在文件增长时输出附加数据。

将文件从一个位置移动到另一个位置。

filename1 文件的源路径, filename2 是目标路径。

将文件从一个位置复制到另一个位置。

filename1 文件的源路径, filename2 是目标路径。

删除文件。在目录上使用此命令会给您显示一个错误: rm: directory: is a directory 。 为了删除目录,你必须传递 -rf 去递归删除目录中的所有内容。

比较文件,并列出他们的差异。

让您更改文件的读取,写入和执行权限。

压缩文件。

解压缩gzip压缩的文件。

让你查看gzip压缩文件,而不需要gunzip它。

打印文件。

查看打印机队列。

Example:

从打印队列移除某些内容。

awk是处理文本文件最有用的命令。它一行一行地在整个文件上运行。默认情况下,它使用空格分隔字段。awk命令最常用的语法是

让我们采取以下文件 /etc/passwd 。以下是此文件包含的示例数据:

所以现在让我们从这个文件只获取用户名。 -F 指定在我们要基于哪个分隔字段。在我们的例子中 : 。 { print $1 } 意味着打印出第一个匹配字段。

运行上述命令后,您将获得以下输出。

有关如何使用 awk 的更多细节,请查看以下链接。

查找文件内的文本。您可以使用grep搜索与一个或多个正则表达式匹配的文本行,并仅输出匹配的行。

Example:

您还可以通过使用 -i 选项强制grep忽略单词大小写。 -r 可用于搜索指定目录下的所有文件,例如:

-w 只搜索单词。有关 grep 详细信息,请查看以下链接。

告诉你一个文件中有多少行,多少单词和多少字符。

Example:

7459 是行数, 15915 是单词数, 398400 是字符数.

用于过滤和转换文本的流编辑器。

example.txt

用连字符替换所有空格

使用"d"替换所有的数字

排序文本文件的行

example.txt

sort example.txt

随机化一个排序的example.txt

报告或省略重复的行

example.txt

只显示example.txt的唯一行(首先你需要排序,否则看不到重叠)

显示每行的唯一项,并告诉我找到了多少个实例

从每行文件中删除部分。

example.txt

显示第2,7和9栏的空格作为分隔符

显示一行文字

显示 "Hello World"

用字母之间的换行显示 "Hello World"

简单的最佳文本格式化程序

example: example.txt (1 line)

将example.txt的行输出为20个字符的宽度

翻译或删除字符

example.txt

把所有小写字母变成为大写

把所有的空格变成换行符

显示文件的行数

example.txt

带行号显示 example.txt

打印匹配模式的行 - 扩展表达式(别名为:'grep -E')

example.txt

在其中显示“Lorem”或“dolor”的行

打印匹配模式到的行 - FIXED模式匹配(别名为:'grep -F')
example.txt

在example.txt中找到具体的字符串'(Lorem | doloar)'

生成一个新的目录。

执行这个,从一个目录转移到另外一个目录。

将你移动到主目录。此命令接受可选的 dirname ,将你移动到该目录。

告诉你你目前所在的目录。

ssh (SSH client) 是一个用来在登录到远程机器并执行的命令的程序。

此命令还接受 -p 可用于连接到特定端口的选项。

返回当前登录用户名。

允许当前登录的用户更改其密码。

显示您的磁盘配额。

显示当前日期和时间。

显示月份的日历。

显示当前的正常运行时间。

显示谁在线

Displays information about user.

显示内核信息。

显示指定命令的手册。

显示磁盘使用情况。

显示文件名中文件和目录的磁盘使用情况( -s只给出一个总数)。

列出您最后登录的指定用户。

列出您的进程。

使用您所提供的ID杀死(结束)进程。

用名称杀死所有进程。

显示当前活动的进程。

列出停止的或后台工作的Job; 恢复在后台停止的Job。

前台化最近的Job。
Brings the most recent job in the foreground.

Pings主机并输出结果。

获取域的whois信息。

获取域的DNS信息。

下载文件。

在本地主机和远程主机之间或两台远程主机之间传输文件。

从本地主机复制到远程主机

从远程主机复制到本地主机

此命令还接受 -P 选项可用于连接到特定的端口。

在bash中你将编写第一行脚本文件,被叫做 shebang 。任何脚本中的这一行来确定脚本的执行能力,如独立的可执行文件,而不是在终端中预先键入sh,bash,pythonphp等。

Example:

上面的一行创建一个变量str并给它赋值“hello world”。通过 $ 放在变量名的开头来检索变量的值。

Example:

像其他语言一样,bash也有数组。数组是包含多个值的变量。数组的大小没有最大限制。bash中的数组为零。第一个元素被索引为元素0.在bash中创建数组有几种方法。以下给出了哪些。

Examples:

要在特定索引处显示值,请使用以下语法:

如果没有提供索引,则假定为数组元素0。要了解数组中有多少值,请使用以下语法:

Bash也支持三元条件。下面是一些例子。

检查一些关于如何操作字符串的语法

Example:

当您运行上述示例时,该hello函数将输出“world!”。上述两个功能 hello 和 say 是相同的。主要区别是功能 say 。此功能打印其接收到的第一个参数。函数内的参数以与给脚本的参数相同的方式进行处理。

bash中的条件语句与其他编程语言相似。条件有许多形式,如最基本的形式是 if 表达式 then 语句,其中语句只有在表达式为真时执行。

有时,如果条件变得混乱,所以你可以使用相同的条件 case statements 。

Expression Examples:

bash 中有三种不同类型的循环。 for , while 和 until .

for 语法:

while 语法:

until 语法:

bash_profile 可以通过运行后面的命令打开。 nano ~/.bash_profile

nano ~/.bashrc

source ~/.bashrc
cd hotellogs

您可以通过传递不同的选项来轻松地调试bash脚本bash。例如-n,不会运行命令并仅检查语法错误。-vecho命令在运行它们之前。-x命令行处理后的echo命令。

⑤ 怎么在bash脚本中运行一个已经编译好的可执行程序

有2种办法:
1、直接执行绝对路径:
/usr/local/apache2/bin/apachetcl
2、建立软链接到系统PATH中:
ln -s /usr/local/apache2/bin/* /usr/local/bin/
然后,你就可以直接敲命令apachectl了。。。

⑥ linux下怎么运行bash脚本

linux下运行bash脚本的方法如下:
1.
首先在桌面右键点击,选择在终端中打开,打开命令行;
2.
在命令行中输入
cd
脚本路径,进入脚本所在目录;
3.
使用chmod
+x
脚本名命令给文件添加可执行权限;
4.
使用sh
脚本名或者
./脚本名的方法来运行bash脚本。

⑦ 不过时的技术——Bash脚本

Bash是一种不需要编译,直接运行在Unix/Linux系统之上的脚本程序。它可以只包含一些简单的命令,顺序执行;也可以包含变量、控制语句等复杂的语法结构。Unix/Linux系统一直就是计算机世界的基石,Bash也是系统管理员、程序员必须掌握的技术之一,很多工作都可以借助Bash自动执行。甚至Unix/Linux系统本身的很多功能,也是由Bash实现的。随意打开 /etc/init.d/ 目录下的某个文件,会发现就是一个Bash脚本,在Linux中,存在这大量这样的脚本。

上面的脚本看似复杂,但从结构上可以简单划分为四部分:

1. 第一行 #! /bin/sh 叫 shebang ,标明这是一个Shell脚本。
2. 后面以 # 打头的是注释,说明该脚本的作用及用法。
3. 中间一大段是命令及控制语句,这里是真正做事的地方。
4. 最后 exit 0 ,退出脚本。
一个Linux命令执行后,都会有一个返回值, 0 表示命令执行成功, 1 表示命令执行过程中出错,根据错误的不同,还可能返回 2 、 3 、 4 等值。在Linux中,变量 $? 记录了上次命令的返回值。使用 echo $? 可以查看上次命令执行成功与否。Bash脚本的返回值默认为最后一条命令的返回值,很多时候这并不是我们想要的结果,因此常常在脚本最后使用 exit 0 显式声明返回值。

遵循上面的规则,我们可以编写出自己的第一个Bash脚本: hello_world ,它的作用是在命令行打印一条消息。

切换到该脚本所在目录, bash hello_world 运行该脚本,不出意外的话,恭喜你写出了第一个Bash脚本。

通常人们不采用 bash hello_world 这种方式运行Bash脚本,而是赋给脚本可执行权限,直接运行脚本:

有些同学会在运行脚本时碰到一个问题:既然已经在当前目录下,为什么直接运行 hello_world 会报命令找不到的错误?这是因为 当前目录并不包含在$PATH 路径下。Linux执行一个程序时,总是在系统环境变量$PATH里找对应的可执行程序,如果找不到,就会报命令找不到的错误。我们可以打印出$PATH变量 echo $PATH ,显然,当前路径并没有包含在里面。

为了方便,系统管理员通常把Bash脚本保存在 /usr/local/bin 和 $USER/bin 目录下,因为这些目录默认包含在系统环境变量$PATH里。我喜欢在当前用户目录下新建一个 bin 目录,然后将该目录加入$PATH,就可以直接在这里编写Bash脚本了。

编写Bash脚本时手一滑,可能会将脚本命名为 test ,此时执行脚本会得到意想不到的结果:

使用 which 和 type 命令检查后发现,事实上执行了一条内置的Linux命令。此时就需要明确指定路径来执行该脚本了: ./test 。最好是能在命名时注意冲突,随着对Linux的熟悉,这种情况会慢慢好起来的。

最后为大家布置一道练习题:编写一个Bash脚本,在当前目录下生成一个日志文件,随意输入一些内容,备份该文件,并将原始日志文件内容清空。如果对Linux命令不熟悉,可能要查阅一些资料:如何输出一些文本到文件、如何清空文件内容等。

读者若对Bash脚本感兴趣,可阅读 Advanced Bash-Scripting Guide 深入学习,祝大家学习快乐!

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:705
制作脚本网站 发布:2025-10-20 08:17:34 浏览:969
python中的init方法 发布:2025-10-20 08:17:33 浏览:677
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:831
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:738
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1077
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:309
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:189
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:875
python股票数据获取 发布:2025-10-20 07:39:44 浏览:831