sh脚本制作
① 如何在.bat 中call sh 脚本
java执行jar包中的class命令为:java-classpathxxx.jarpackage.MyTools注意:该MyTools中必须包含main函数.例子:1.业务代码MyTools类含有main函数,包路径为com.my.test,它引用了oracle的驱动classes12.jar最终打包成Tools.jar2.新建start.bat文件,内容如下(注意要引入classes12.jar,以分号间隔)java-classpathTools.jar;classes12.jarcom.my.test.MyToolspause同样,sh脚本:要进行dos2unix#!/bin/shcmddir="`dirname$0`"
② linux怎么将脚本sh制作为命令mtab
linux添加管理自定义命令
方法一:简单的命令使用 alias 起别名 www.2cto.com
编辑所用的 shell 配置文件,如 bash 的 .bashrc,zsh 的 .zshrc,如加入:
alias ws="cd ~/workspace"
重载该配置文件使更改生效,如source .bashrc。在任意位置输入ws,即可 cd 到 workspace 目录。
www.2cto.com
如果有很多 alias 命令,可单独定义一个文件存放,参考 .bashrc中 的一段说明:
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
如果有多个shell,这种方法更方便管理,只需要将这个文件添加到各shell配置文件中即可。
方法二:将可执行文件目录加入PATH
1、创建存放自定义命令的目录,如my_cmd
2、将该目录加入path中
编辑所用的 shell 配置文件,如 bash 的 .bashrc,zsh 的 .zshrc,加入
PATH=$PATH:~/my_cmd
也可以将该命令添加到方法一中单独创建的自定义命令存放文件中
3、重载该配置文件使更改生效,如 source .bashrc
4、将自定义的可执行程序放入 my_cmd 中,在 shell 就可以直接执行了
方法三:综合上述方法管理自定义命令
1、编辑所用的 shell 配置文件,如 bash 的 .bashrc,zsh 的 .zshrc,加入:
if [ -f ~/shellrc ]; then
. ~/shellrc
fi
2、创建 shellrc,加入对 shell 配置文件的改动,如:
PATH=$PATH:~/my_cmd
alias ws="cd ~/workspace"
简单的命令如 alias,放入shellrc。可执行文件放入my_cmd。
③ Android 讲述执行怎样执行shell脚本
一、Android应用启动服务执行脚本
1 如何写服务和脚本
在android源码根目录下有/device/tegatech/tegav2/init.rc文件相信大家对这个文件都不陌生(如果不明白就仔细研读下android启动流程)。如果在该脚本文件中添加诸如以下服务:
service usblp_test /data/setip/init.usblpmod.sh
oneshot
disabled
注解:每个设备下都会有自己对应的init.rc,init.设备名.rc脚本文件。oneshot disabled向我们说明了在系统启动的时候这个服务是不会自动启动的。并且该服务的目的是执行/data/setip/init.usblpmod.sh脚本。脚本的内容你可以随便写,只要符合shell语法就可以了,比如脚本可以是简单的设置eth0:
# ! /system/bin/sh //脚本的开头必须这样写。
Ifconfig eth0 172.16.100.206 netmask 255.255.0.0 up//设置ip的命令
2、如何在应用中启动服务
1)首先了解下在服务启动的流程
1. 在你的应用中让init.rc中添加的服务启动起来。
首先了解下在服务启动的流程:
在设备目录下的init.c(切记并不是system/core/init/init.rc)
Main函数的for(;;)循环中有一个handle_property_set_fd(),函数:
for (i = 0; i < fd_count; i++) {
if (ufds[i].revents == POLLIN) {
if (ufds[i].fd == get_property_set_fd())
handle_property_set_fd();
else if (ufds[i].fd == get_keychord_fd())
handle_keychord();
else if (ufds[i].fd == get_signal_fd())
handle_signal();
}
}
这个函数的实现也在system/core/init目录下,该函数中的check_control_perms(msg.value, cr.uid, cr.gid)函数就是检查该uid是否有权限启动服务(msg.value就是你服务的名字),如果应用为root或system用户则直接返回1.之后就是调用handle_control_message((char*) msg.name + 4, (char*) msg.value),该函数的参数就是去掉1.ctl.后的start和2.你服务的名字。这个函数的详细内容:
void handle_control_message(const char *msg, const char *arg)
{
if (!strcmp(msg,"start")) {
msg_start(arg);
} else if (!strcmp(msg,"stop")) {
msg_stop(arg);
} else if (!strcmp(msg,"restart")) {
msg_stop(arg);
msg_start(arg);
} else {
ERROR("unknown control msg '%s'\n", msg);
}
}
匹配start后调用msg_start.服务就这样起来了,我们的解决方案就是在检查权限的地方“下点功夫”,因为我们不确定uid,所以就让check_control_perms这个函数不要检查我们的uid,直接检查我们服务的名字,看看这个函数:
static int check_control_perms(const char *name, unsigned int uid, unsigned int gid) {
int i;
if (uid == AID_SYSTEM || uid == AID_ROOT)
return 1;
/* Search the ACL */
for (i = 0; control_perms[i].service; i++) {
if (strcmp(control_perms[i].service, name) == 0) {
if ((uid && control_perms[i].uid == uid) ||
(gid && control_perms[i].gid == gid)) {
return 1;
}
}
}
return 0;
}
这个函数里面是必须要检查uid的,我们只要在for循环上写上。
if(strcmp(“usblp_test”,name)==0) //usblp_test就是我们服务的名字。
return 1;
这样做不会破坏android原本的结构,不会有什么副作用。
init.c和init.rc都改好了,现在就可以编译源码了,编译好了装到机子开发板上就可以了。
④ Linux如何编写shell脚本
一般以#!/bin/sh开头(不是必须要写,但一定要单独一行),指定执行这个脚本的shell程序(也可以用#!/bin/zsh或其他),然后就是堆命令了。
Linux的shell脚本支持很多功能,加上Linux高度模块化的命令,完全可以用shell脚本写出复杂的程序。
以上只是简单介绍如何开始写shell脚本,如果要写复杂的脚本,还需要深入学习相关知识(如if——fi、case——esac等结构)。
当然,还需要给脚本加上可执行权限(chmod +x ./file.sh),否则可以用sh ./file.sh方式执行脚本(这里的sh是执行脚本所需shell,命令也可以是zsh ./file.sh或其他)。
整个shell脚本,其实就相当于你在终端输入的一系列命令,如果想在shell里做什么,就先想想在终端可以做什么吧,字符的的连接,就是直接用 "" 双引号,输出,变量定义无 $ 符号,但是使用时一定要加上 $ 符号。
"=" 赋值符号,两边一定不能有空格,这和其他语言有区别,尤其是你还有自己代码美观风格时特别注意,否则会报语法错误!
for 中的数组内容是以 " " 空格分隔,而非 "," 逗号分格。
条件判断 [ true ] 中括号 后面需要有一个空格,但是两个中括号之间不能有空格如 [[ true ]]。
while 条件判断可以用 () 括号,也可以用 [[ ]] 中括号。
如果用windows写shell,一定要注意换行符格式 而非 , 需要借助一些编辑器(如notepad++)更改换行符格式!
⑤ 如何编写一个shell脚本
新建一个文件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运行脚本。
⑥ Linux中编写shell脚本,输出如下序列:1,3,2,4,3,5,4,6,···100 。[附图]
脚本至少有如下错误:
{j}改为${j}或$j,是要取值的啊
expr语句外面是反引号(键盘上ESC下面那个键)而不是单引号,表示执行命令而不是单纯一个字符串,expr后面的运算符左右两侧要有空格。
if跟[之间是要有空格的,if判断表达式比较符两侧也要有空格,数字跟 [ ]之间要有空格。
我修正了,自己运行成功生成你要的数列了。你自己对比下吧:
#!/bin/bash
#scriptnameprg8.sh
clear
i=1
for((j=1;j<=98;j++))
do
echo-n"$j,`expr$j+2`,"
if[$i-eq10]
then
echo""
i=1
else
i=$((i+1))
fi
done
echo""
注释里已经说了,scriptnameprg8.sh,脚本名叫prg8.sh,当然,叫什么名字是你的自由。
⑦ 怎么在linux下创建一个可运行脚本
步骤:
1.新建一个.sh文件,touch test.sh
(7)sh脚本制作扩展阅读:
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。
脚本(Script)是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。
Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。
shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。
shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。
⑧ 怎么创建.sh 文件(linux)
文本编辑软件都可以,文件开头第一行一般是:#!
/bin/bash,后边是shel命令脚本及注释,编辑好保存为sh后缀文件(不是必要的),添加可执行属性就OK了。
⑨ 怎么创建.sh 文件(linux)
创建方法如下:
1、touch hello.sh
2、vim hello.sh
键入i
插入#!/bin/sh
echo hello world;
键入:
esc
:
wq
3、chmod 700 hello.sh
4.、执行./hello.sh
(9)sh脚本制作扩展阅读:
关于linux shell 文件的操作总结
1、创建文件夹
#!/bin/sh
mkdir -m 777 "%%1"
2、创建文件
#!/bin/sh
touch "%%1"
3、删除文件
#!/bin/sh
rm -if "%%1"
4、删除文件夹
#!/bin/sh
rm -rf "%%1"
5、删除一个目录下所有的文件夹
#!/bin/bash
direc="%%1" #$(pwd)
for dir2del in $direc/* ; do
if [ -d $dir2del ]; then
rm -rf $dir2del
fi
done
6、清空文件夹
#!/bin/bash
direc="%%1" #$(pwd)
rm -if $direc/*
for dir2del in $direc/* ; do
if [ -d $dir2del ]; then
rm -rf $dir2del
fi
done
7、读取文件
#!/bin/sh