sh命令 linux,sh执行shell脚本

linux shell脚本执行命令

linux shell脚本执行命令主要有四种方式,具体介绍如下:

方式一:

切换到shell脚本所在的目录(也叫工作目录)执行shell脚本,具体代码是:

cd/data/shell

./hello.sh

方式二:

可以以绝对路径的方法去执行bash shell脚本,具体代码是:

/data/shell/hello.sh

方式三:

可以选择直接使用bash命令或者sh命令来执行bash shell脚本,具体代码是:

cd/data/shell

bash hello.sh

或者

cd/data/shell

sh hello.sh

方式四:

还可以选择在当前的shell环境中执行bash shell脚本,具体代码是:

cd/data/shell

. hello.sh

cd/data/shell

source hello.sh

说明:前三种方式执行shell脚本时都需要在当前shell(即父shell)开启的一个子shell环境中执行,完成之后就会关闭回到原来的shell中,但方式四是直接在当前的shell中执行的。

java调用linux命令行

java怎么调用linux命令行呢?下面是java调用linux命令行的具体方法介绍:

java调用linux命令行有两种调用方式。一种是直接调用linux命令,二是将linux命令写到.sh脚本中,调用脚本执行。

1、直接调用:

使用java中lang包下面的Runtime类和Process类,其中Runtime类中的Runtime.getRuntime().exec(linux command)方法可以直接执行linux命令,而Process类可以接收Runtime.getRuntime().exec()类的返回值,并提供了waitFor()方法和destroy()方法,waitFor()方法的作用在于等待此process执行完成后再执行后面的内容,destroy()方法作用在于销毁process。

2、调用shell脚本:

直接调用方法存在一些弊端,比如复杂命令不好实现、有些命令莫名其妙实现不了等。因此我推荐使用调用shell脚本的方式实现linux命令。具体实现方法为:首先将命令写在shell脚本(.sh)中,然后在Runtime.getRuntime().exec()中调用“sh path/.sh”,其中path为shell脚本的路径。

实现案例如下图所示:

其中imp.sh中的命令是:

1 name=$12 su- oracle-c imp user/pwd@实例名 file=filepath full=y ignore=y

该语句实现的功能为在root用户下,切换到oracle目录,并将某个.dmp文件使用imp命令导入oracle数据库,然后返回到root用户下,将该语句放到for循环中实现了多个.dmp文件导入oracle数据库的功能。其中.dmp文件的文件名是变量,在shell命令中以name=$1代替,在linux命令中以${name}代指文件名,在调用时传入该参数的值,linux命令中$1,$2…$n是占位变量,在使用变量时按顺序使用,赋值时按照相应的顺序进行赋值。

Linux中的sh命令的详细解释

linxu下的sh命令相当于是shell命令语言的解释器。下面由我为大家整理了linux的sh命令的详细解释的相关知识,希望对大家有帮助!

一、Linux中的sh命令的详细解释

sh命令是shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取。通过用户输入命令,和内核进行沟通!Bourne Again Shell(即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。

语法

bash [options] [file]

选项

-c string:命令从-c后的字符串读取。

-i:实现脚本交互。

-n:进行shell脚本的语法检查。

-x:实现shell脚本逐条语句的跟踪。

二、Linux中的sh命令的具体例子

使用-x选项跟踪脚本调试shell脚本,能打印出所执行的每一行命令以及当前状态:

[root@AY1307311912260196fcZ satools]# sh-x check_ssh_login.sh

+ DEFINE=30

+ cat/var/log/secure

+ awk'/Failed/{++ip[$(NF-3)]} END{for(i in ip) print i"="ip[i]}'

++ cat/root/satools/black.txt

+ for i in'`cat/root/satools/black.txt`'

++ echo 121.42.0.16=1427

++ awk-F='{print$1}'+ IP=121.42.0.16

++ echo 121.42.0.16=1427

++ awk-F='{print$2}'

+ NUM=1427

+'[' 1427-gt 30']'

+ grep 121.42.0.16/etc/hosts.deny

+'[' 1-gt 0']'

+ echo sshd:121.42.0.16

+ echo vsftpd:121.42.0.16

+ for i in'`cat/root/satools/black.txt`'

++ echo 121.42.0.72=276

++ awk-F='{print$1}'

+ IP=121.42.0.72

++ awk-F='{print$2}'

++ echo 121.42.0.72=276

+ NUM=276+'[' 276-gt 30']'

+ grep 121.42.0.72/etc/hosts.deny

+'[' 1-gt 0']'

+ echo sshd:121.42.0.72

+ echo vsftpd:121.42.0.72

三、Linux中对.sh文件的操作命令

1、创建test.sh文件

touch test.sh

2、编辑sh文件

vi test.sh

3、保存退出

敲击esc,然后输入:wq,回车退出

4、添加可执行权限,当然默认就是可执行的。

chmod+x test.sh

5、运行文件

(1)./test.sh

(2)sh test.sh

6、删除文件

rm test.sh

阅读剩余
THE END