当前位置:首页 » 编程软件 » shell脚本运行

shell脚本运行

发布时间: 2022-01-11 21:47:45

‘壹’ linuxshell 脚本执行的过程是怎样的

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情况而定),执行:

chmod +x myshell.sh

然后执行:

./myshell.sh

就可以执行了。

‘贰’ 这个shell脚本怎么才能运行起来

首先,如果你想运行shell脚本的话,必须确保这个脚本具有执行权限,如果没有执行权限,可以用如下命令加上执行权限:chmod +x 文件名;
其次,你的shell脚本可以运行,里面的内容必须正确;
另外,写shell的时候要对自己写的内容了解,否则造成的损失是不可估量的。

‘叁’ 如何执行shell脚本其中一条命令

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

复制代码代码如下:

cd /data/shell

./hello.sh

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

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

复制代码代码如下:

/data/shell/hello.sh

方法三:直接使用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路径自然也好理解了啊,呵呵……。

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

复制代码代码如下:

cd /data/shell

. hello.sh



复制代码代码如下:

cd /data/shell

source hello.sh

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

‘肆’ 如何用SHELL命令运行一个文件

1、Shell是命令解释器,所执行的文件有两种,一种是基于ELF文件格式的可执行文件,一种是基于Shell脚本格式的脚本文件。

2、不管是可执行文件还是shell脚本,如果存在于PATH变量所指明的路径中,shell会自动寻找相应的可执行文件,用户只需要输入可执行文件名或者脚本名即可执行。

3、如果可执行文件或者Shell脚本的存放位置不在PATH变量所指明的路径中,则需要通过".”来执行,比如下面的C语言写的hello world程序,需要输入./t才可以被shell运行。

‘伍’ SHELL脚本运行的几种方法以及区别

#2 sh/bash ./a.sh 这种情况不需要脚本具有执行权限 以上两种执行方式都是在子shell中执行的,也就是说当前shell需要启动另外一个shell,用来执行a.sh内的命令 #1 source ./a.sh #2 ../a.sh(注意前面的 . ) 以上两种执行方式是在当前shell下执行,并不需要建立子shell source和 . 命令的作用:用来执行一个脚本 前两种方式和后两种方式的另外区别:如果你在一个脚本里export $KKK=111 ,如果你用./a.sh执行该脚本,执行完毕后,你运行 echo $KKK ,发现没有值,如果你用source来执行 ,然后再echo ,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结构并没有反应到父shell里,但是source不同它就是在本shell中执行的,所以可以看到结果。 # 执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出 # 一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell中) # 用export定义的变量会被复制到该shell的子shell中

‘陆’ 怎么在shell里写脚本并运行

执行“nano function.sh”命令,创建新的shell脚本文件,名字为“function.sh”。

编辑新创建的shell脚本文件“function.sh"。函数必须先定义后使用。

shell脚本的内容如下:
#!/bin/bash
add(){

sum_1=$1;
sum_2=$2;
sum=`expr $sum_1 + $sum_2`;
echo "the sum is ${sum}";
}

add $1 $2

给新创建的function.sh赋可执行权限,命令为“chmod 755 function.sh”。

使用“./function.sh 1 2”调用脚本,并给脚本传递两个数字。

6
执行命令的结果为“the sum is 3”。

‘柒’ Linux shell脚本如何自动运行程序并输入命令

我建议你使用shell的spawn命令,很好用的,能实现你说的功能!

‘捌’ 如何运行shell脚本

编写好的shell脚本(如:test),可以采取两种方式进行运行:
一、 $ sh test
一般不采用这种调用方式,尤其不采用“sh<test”的调用方式,因为这种方式将禁止shell读取标准输入。
也可以采用 $ ksh test
这种方式要求shell具有“可读”的访问权限。
二、直接运行可执行的shell脚本之前,首先应使用下列chmod命令,把shell脚本文件设置为可执行的文件。
chmod 755 test(除文件属主可写之外,每个用户均具有读和可执行的访问权限)
chmod +rx test(同上)
chmod u+rx test(只有文件属主具有读和执行的访问权限)
按照上述要求设置shell脚本文件的访问权限后,可采用下列方式,直接运行shell脚本了。
1、test(如果命令检索路径包含当前目录)
2、./test(如果命令减缩路径不包含当前目录)
*说明: sh test 方式调用一个shell叫蹦可能会禁止某些shell特定的扩展功能,因而可能引起脚本无法正确执行。

‘玖’ 如何运行linux shell程序

如何运行shell程序,如何在shell程序以及后续脚本中使用同一个变量,这些在工作中经常用到, 我找到如下的文章,再加深复习一下。
1 source命令用法:
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。该filename文件可以无"执行权限"
注:该命令通常用命令“.”来替代。
如:source .bash_profile
. .bash_profile两者等效。
source(或点)命令通常用于重新执行刚修改的初始化文档。
source命令(从 C Shell 而来)是bash shell的内置命令。
点命令,就是个点符号,(从Bourne Shell而来)。
source的程序主体是bash,脚本中的$0变量的值是bash,而且由于作用于当前bash环境,脚本中set的变量将直接起效

2 sh, bash的命令用法:
sh/bash FileName

作用:打开一个子shell来读取并执行FileName中命令。该filename文件可以无"执行权限"

注:运行一个shell脚本时会启动另一个命令解释器.
每个shell脚本有效地运行在父shell(parent shell)的一个子进程里.
这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程.
shell脚本也可以启动他自已的子进程.
这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务.
在ubuntu中sh只是bash的一个链接。
由于是在子shell中执行,脚本设置的变量不会影响当前shell。

3 ./的命令用法:
./FileName
作用:打开一个子shell来读取并执行FileName中命令。该filename文件需要"执行权限"
注:运行一个shell脚本时会启动另一个命令解释器.
每个shell脚本有效地运行在父shell(parent shell)的一个子进程里.
这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程.
shell脚本也可以启动他自已的子进程.
这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务.
由于是在子shell中执行,脚本设置的变量不会影响当前shell。

4 export:
一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本
5. 举例
比如您在一个脚本里export $KKK=111 ,假如您用./a.sh执行该脚本,执行完毕后,您运行 echo $KKK ,发现没有值,假如您用source来执行 ,然后再echo ,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结构并没有反应到父shell里,但是 source不同他就是在本shell中执行的,所以能够看到结果.
小测试
1 建立test.sh
#!/bin/bash
export s=/home/jboss/
2 执行命令: source test.sh
echo $s
结果输出: /home/jboss/
3 新开个shell
执行命令: ./test.sh
echo $s
结果: 没有输出s值

结论:
1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出。
2、一个shell中的系统环境变量才会被复制到子shell中(用export定义的变量);
3、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell中)。3、不用 export定义的变量只对该shell有效,对子shell也是无效的。

直接执行一个脚本文件是在一个子shell中运行的,而source则是在当前shell环境中运行的。
source可以让脚本影响它们的父shell环境,这和export去影响子shell环境相反.

热点内容
实测华为编译器 发布:2024-09-19 23:50:52 浏览:821
linux汇总 发布:2024-09-19 23:46:39 浏览:452
阿里云服务器环境搭建教程 发布:2024-09-19 23:21:58 浏览:837
黄色文件夹图标 发布:2024-09-19 23:19:22 浏览:684
mysql数据库导出导入 发布:2024-09-19 23:00:47 浏览:183
lua脚本精灵 发布:2024-09-19 23:00:41 浏览:659
任务栏文件夹图标 发布:2024-09-19 22:54:25 浏览:101
解压来一波 发布:2024-09-19 22:46:36 浏览:933
mysqlpythonubuntu 发布:2024-09-19 22:46:27 浏览:501
服务器请求获取ip地址 发布:2024-09-19 22:33:25 浏览:515