exec,execrable

http://www.itjxue.com  2023-01-07 04:23  来源:未知  点击次数: 

shell脚本中的 exec 命令

??exec执行命令时,不会启用新的shell进程。

??source和 .也不会启用新的shell进程,在当前shell中执行,设定的局部变量在执行完命令后仍然有效。

??bash或sh执行时,会另起一个子shell进程,其继承父shell进程的环境变量,其子shell进程的变量执行完后不影响父shell进程。

??exec是用被执行的命令行替换掉当前的shell进程,且exec命令后的其他命令将不再执行。

??例如在当前shell中执行 exec ls 表示执行ls这条命令来替换当前的shell ,即为执行完后会退出当前shell。

??为了避免父shell被退出,一般将exec命令放到一个子shell脚本中,在父sehll中调用这个子shell脚本,调用处可以用bash xx.sh(xx.sh为存放exec命令的脚本),这样会为xx.sh建立一个子shell去执行,当执行exec后该子shell进程就被替换成相应的exec的命令。

??其中有一个例外:当exec命令对文件描述符操作的时候,就不会替换shell,而是操作完成后还会继续执行后面的命令!

文件描述符

shell中描述符一共有12个

0 代表标准输入

1 代表标准输出

2 错误输出

其他 3-9 都是空白描述符

其含义是: 复制标准输出到3 ,错误输出到 4 ,把 3 4 保存在bash.log 这个文件中。

其含义是:将bash.sh脚本执行的标准输出和错误输出追加重定向到 bash.log

如果exec 跟的是其他命令,则其他命令结束后,本shell也随之停止

可以看到随着 echo " hello oracle" 这条指令运行完本 整个脚本执行完毕,后面的 echo " hello db2" 没有执行!

二、Linux shell 脚本中, $@ 和 $@ 分别是什么意思?

$@ 表示所有脚本参数的内容

$# 表示返回所有脚本参数的个数

示例:编写如下shell脚本,保存为test.sh

说明:给脚本提供了两个参数,所以 @代表了参数的内容!

怎么理解shell脚本中 exec "`dirname "$0"`/node""$0" "$@" ?

$0 ?????????? #脚本自己的路径

"`dirname "$0"`"/node ???#脚本目录下的node程序的路径

$@ ???????????#脚本被执行时的命令行参数

合起来就是:用脚本目录下的node程序来解释这个脚本本身

exec scala "$0" "$@" 是什么意思

这是bash语法。

$0 ?????????#表示当前脚本的名字

$@ ?????????#表示当前脚本执行的所有参数

exec scala "$0" "$@" ??#表示用scala命令,带参数,执行当前脚本

$0 是位置参数,表示脚本名称

$1 表示脚本的第一个参数,依次类推直到 $9

exec用于执行命令、或脚本、或外部可执行程序,会新建一个shell去执行

综上,这里exec sh "$0" 就是执行脚本本身

所以,就是一个循环过程,每隔两秒打印一次 Hello

帮忙简单回答下:EXEC是什么意思?做什么用?什么情况要用呢?

EXEC是执行的意思,全称是Execute.用来执行诸如存储过程

例如EXEC SP_HELPDB 用来显示数据库情况

发在这个板块的.当然是这个了.呵呵.

例如:

exec sp_dboption N'data', N'ANSI nulls', N'false'

GO

exec sp_dboption N'data', N'concat null yields null', N'false'

GO

exec sp_dboption N'data', N'cursor close on commit', N'false'

GO

exec sp_dboption N'data', N'default to local cursor', N'false'

GO

exec sp_dboption N'data', N'quoted identifier', N'false'

GO

exec sp_dboption N'data', N'ANSI warnings', N'false'

GO

exec sp_dboption N'data', N'auto create statistics', N'true'

GO

exec sp_dboption N'data', N'auto update statistics', N'true'

GO

SQL语言EXEC作用?

修改表删除表,用的是update或者drop,这都是固定的sql语句的起始,比如ddl语句(create,drop,alter等),dml语句(insert ,delete,update,select),dcl语句等(commit,revoke,grant,rollback),这些语句都有固定的起始,看到这个语句sql解释器就知道你要干什么了。

那么sp_help是什么?是固定的起始吗?明显不是?那么sp_help是什么,应该是一个过程或者包一类的东西,那么这个东西写在这里要干什么,明显是要执行,那么怎么执行这个包或者过程,用execute,简化写为exec。

这里属于单独执行一个过程或者包,那么肯定要加exec执行,exec是语句固定提示符,告诉程序他的下一个动作是“执行”

数据库中的exec有什么作用啊?用来干嘛的,什么用,比如exec 表名 '1','','',''像这样的格式

你举得例子里面,exec是执行数据库中的存储过程的。

exec+存储过程名(不是表名)+'X'(X表示存储过程所要的参数1……N;每个参数用","隔开)

比如有个寻出过程名叫getInfo,有2个输入参数(id,name)

exec getInfo ‘10000’,‘张三'

结果就是getInfo这个存储过程使用id='10000'、name='张三' 所得到的操作结果

数据库的“EXEC”是什么意思?应该怎么用?

sqlserver中\x0d\x0aEXEC命令有两种用法,一种是执行一个存储过程,另一种是执行一个动态的批处理\x0d\x0a\x0d\x0a1.使用系统存储过程sp_executesql运行Unicode命令字符串\x0d\x0a语法如下:\x0d\x0asp_executesql [@stmt=] stmt\x0d\x0a[\x0d\x0a {,[@params=] N'@parameter_name data_type [,...n]'}\x0d\x0a {,[@param1=] 'value' [,...n]}\x0d\x0a]\x0d\x0a说明:必须先将各个包含所要运行的命令语句的Unicode字符串相加在一起,再交给系统存储过程sp_executesql来运行,而不能在sp_executesql的语句中来相加各个命令字符串。\x0d\x0a举例如下:\x0d\x0adeclare @DBName nvarchar(20),\x0d\x0a @Tbname nvarchar(20),\x0d\x0a @SQLString nvarchar(500)\x0d\x0aset @DBName=N'Northwind'\x0d\x0aset @Tbname=N'Customers'\x0d\x0aset @SQLString=N'USE '+@DBName+char(13) --char(13)换行\x0d\x0aSET @SQLString=@SQLString+N'select * from '+@Tbname\x0d\x0a--必须先将命令字符串组合完毕后再交给sp_executesql来运行\x0d\x0aexec sp_executesql @SQLString\x0d\x0a\x0d\x0a2.使用EXECUTE命令运行命令字符串\x0d\x0a要使用EXECUTE命令来运行一个命令字符串的语法如下:\x0d\x0aEXEC[UTE] ({@string_variable|[N] 'stql_string'} [+...n])\x0d\x0a从语法看出,可以先将包含所要运行的命令的字符串赋给一个局部变量@string_variable,再使用EXECUTE命令来运行,或是直接使用EXECUTE命令去运行一个包含所要运行的命令语句的字符串。此外,您也可以将多个包含所要运行的命令语句的字符串相加在一起,再交给EXECUTE命令来一次运行。\x0d\x0a\x0d\x0a例:\x0d\x0adeclare @sql nvarchar(4000) \x0d\x0a set @sql='select * from [表] where email=''test@163.com''' \x0d\x0a exec (@sql)

exec是无效数据类型吗

exec不是无效数据类型。Exec是虚幻4中的一种数据类型,可以作为宏函数参数的数据类型,在宏函数库中也可以使用Exec数据类型。

(责任编辑:IT教学网)

更多

推荐网页背景文章