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