shell腳本javascript
Ⅰ js 可以 調用powershell 腳本嗎
通過cmd來調用應該可以。
s=new ActiveXObject("WScript.Shell");
cmd="powershell -ExecutionPolicy RemoteSigned -F test.ps1";
s.Run(cmd);
Ⅱ 游戲中常說的用腳本是什麼意思
腳本簡單地說就是一條條的文字命令,這些文字命令是可以看到的,腳本程序在執行時,是由系統的一個解釋器,將其一條條的翻譯成機器可識別的指令,並按程序順序執行。
因為腳本在執行時多了一道翻譯的過程,所以它比二進製程序執行效率要稍低一些。
游戲腳本的意思,就是一個模擬滑鼠、鍵盤的程序。
比如玩家要按一下A鍵, 移動滑鼠點擊一下。這個動作,用腳本可以直接幫玩家執行,省了手動操作。但使用游戲腳本在游戲中是作弊行為,會嚴重影響其他玩家的體驗,因此需要嚴厲抵制。
(2)shell腳本javascript擴展閱讀:
腳本的編寫都是採用某一種編程語言。
如 LoadRunnert 測試工具用的 C 語言;WebLoadt 測試工具用 JavaScript 或者是接近編程語言的方式;Robot 測試工具用SQABasic, 一種類似於VB的語言;
QTPt 測試工具所用到的是VBScript;WinRunnert 測試工具所用到的是類 C 的語言。這些測試腳本的易讀性相對較低,編寫相對復雜, 當設備的功能需求發生變化時,測試腳本不易被維護。
常見的腳本語言有:Scala、JavaScript,VBScript,ActionScript,MAX Script,ASP,JSP,php,SQL,Perl,Shell,python,Ruby,JavaFX,Lua,AutoIt等。
Ⅲ shelljavascript腳本放在哪
根據自己的需求放置即可。
javascript腳本可以放在:1、HTML的body部分中,JavaScripts腳本會在頁面載入的時候被執行;2、HTML的head部分中,JavaScripts腳本會在被調用的時候才執行。
javascript腳本放在那裡,一般來說不會影響其執行地效果,當你打開一個網頁的時候他會先執行你需要執行的腳本語言最後才會執行HTML語言腳本。
Ⅳ 腳本中,按鍵精靈和其他的shell腳本、javascript腳本有什麼功能上的區別
按鍵精靈的腳本採用的是VBScript語法,而且它加了很多自己特有的命令(主要是針對游戲的),另外它是用自己的腳本解析器來運行的。
javascript則是嵌入到網頁內的腳本語言,由瀏覽器負責解析運行。
兩者基本上沒有任何交集,所以無法進行比較。
Ⅳ 怎麼通過java去調用並執行shell腳本以及問題總結
對於第一個問題:java抓取,並且把結果打包。那麼比較直接的做法就是,java接收各種消息(db,metaq等等),然後藉助於jstorm集群進行調度和抓取。
最後把抓取的結果保存到一個文件中,並且通過調用shell打包, 回傳。 也許有同學會問,
為什麼不直接把java調用odps直接保存文件,答案是,我們的集群不是hz集群,直接上傳odps速度很有問題,因此先打包比較合適。(這里不糾結設計了,我們回到正題)
java調用shell的方法
通過ProcessBuilder進行調度
這種方法比較直觀,而且參數的設置也比較方便, 比如我在實踐中的代碼(我隱藏了部分業務代碼):
ProcessBuilderpb = new ProcessBuilder("./" + RUNNING_SHELL_FILE, param1,
param2, param3);
pb.directory(new File(SHELL_FILE_DIR));
int runningStatus = 0;
String s = null;
try {
Process p = pb.start();
try {
runningStatus = p.waitFor();
} catch (InterruptedException e) {
}
} catch (IOException e) {
}
if (runningStatus != 0) {
}
return;
這里有必要解釋一下幾個參數:
RUNNING_SHELL_FILE:要運行的腳本
SHELL_FILE_DIR:要運行的腳本所在的目錄; 當然你也可以把要運行的腳本寫成全路徑。
runningStatus:運行狀態,0標識正常。 詳細可以看java文檔。
param1, param2, param3:可以在RUNNING_SHELL_FILE腳本中直接通過1,2,$3分別拿到的參數。
直接通過系統Runtime執行shell
這個方法比較暴力,也比較常用, 代碼如下:
p = Runtime.getRuntime().exec(SHELL_FILE_DIR + RUNNING_SHELL_FILE + " "+param1+" "+param2+" "+param3);
p.waitFor();
我們發現,通過Runtime的方式並沒有builder那麼方便,特別是參數方面,必須自己加空格分開,因為exec會把整個字元串作為shell運行。
可能存在的問題以及解決方法
如果你覺得通過上面就能滿足你的需求,那麼可能是要碰壁了。你會遇到以下情況。
沒許可權運行
這個情況我們團隊的朱東方就遇到了, 在做DTS遷移的過程中,要執行包裡面的shell腳本, 解壓出來了之後,發現執行不了。 那麼就按照上面的方法授權吧
java進行一直等待shell返回
這個問題估計更加經常遇到。 原因是, shell腳本中有echo或者print輸出, 導致緩沖區被用完了! 為了避免這種情況, 一定要把緩沖區讀一下, 好處就是,可以對shell的具體運行狀態進行log出來。 比如上面我的例子中我會變成:
ProcessBuilderpb = new ProcessBuilder("./" + RUNNING_SHELL_FILE, keyword.trim(),
taskId.toString(), fileName);
pb.directory(new File(CASPERJS_FILE_DIR));
int runningStatus = 0;
String s = null;
try {
Process p = pb.start();
BufferedReaderstdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReaderstdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((s = stdInput.readLine()) != null) {
LOG.error(s);
}
while ((s = stdError.readLine()) != null) {
LOG.error(s);
}
try {
runningStatus = p.waitFor();
} catch (InterruptedException e) {
}
記得在start()之後, waitFor()之前把緩沖區讀出來打log, 就可以看到你的shell為什麼會沒有按照預期運行。 這個還有一個好處是,可以讀shell裡面輸出的結果, 方便java代碼進一步操作。
也許你還會遇到這個問題,明明手工可以運行的命令,java調用的shell中某一些命令居然不能執行,報錯:命令不存在!
比如我在使用casperjs的時候,手工去執行shell明明是可以執行的,但是java調用的時候,發現總是出錯。
通過讀取緩沖區就能發現錯誤日誌了。 我發現即便自己把安裝的casperjs的bin已經加入了path中(/etc/profile,
各種bashrc中)還不夠。 比如:
exportNODE_HOME="/home/admin/node"
exportCASPERJS_HOME="/home/admin/casperjs"
exportPHANTOMJS_HOME="/home/admin/phantomjs"
exportPATH=$PATH:$JAVA_HOME/bin:/root/bin:$NODE_HOME/bin:$CASPERJS_HOME/bin:$PHANTOMJS_HOME/bin
原來是因為java在調用shell的時候,默認用的是系統的/bin/下的指令。特別是你用root許可權運行的時候。 這時候,你要在/bin下加軟鏈了。針對我上面的例子,就要在/bin下加軟鏈:
ln -s /home/admin/casperjs/bin/casperjscasperjs;
ln -s /home/admin/node/bin/nodenode;
ln -s /home/admin/phantomjs/bin/phantomjsphantomjs;
這樣,問題就可以解決了。
如果是通過java調用shell進行打包,那麼要注意路徑的問題了
因為shell裡面tar的壓縮和解壓可不能直接寫:
tar -zcf /home/admin/data/result.tar.gz /home/admin/data/result
直接給你報錯,因為tar的壓縮源必須到路徑下面, 因此可以寫成
tar -zcf /home/admin/data/result.tar.gz -C /home/admin/data/ result
如果我的shell是在jar包中怎麼辦?
答案是:解壓出來。再按照上面指示進行操作。(1)找到路徑
String jarPath = findClassJarPath(ClassLoaderUtil.class);
JarFiletopLevelJarFile = null;
try {
topLevelJarFile = new JarFile(jarPath);
Enumeration<JarEntry> entries = topLevelJarFile.entries();
while (entries.hasMoreElements()) {
JarEntryentry = entries.nextElement();
if (!entry.isDirectory() entry.getName().endsWith(".sh")) {
對你的shell文件進行處理
}
}
對文件處理的方法就簡單了,直接touch一個臨時文件,然後把數據流寫入,代碼:
FileUtils.touch(tempjline);
tempjline.deleteOnExit();
FileOutputStreamfos = new FileOutputStream(tempjline);
IOUtils.(ClassLoaderUtil.class.getResourceAsStream(r), fos);
fos.close();
Ⅵ 如何在shell中執行簡單的javascript腳本
javascript腳本的運行需要一個JS的執行環境(比如瀏覽器就是一個執行環境),不同的執行環境下有個別的差異,差異主要是和環境以及平台相關的.
如果是在windows的cmd環境下,可以使用系統自帶的wscript.exe來運行簡單的腳本. 例如:
R:>catc.js
varsum=0;
for(vari=0;i<10;i++){
sum+=i;
}
WScript.Echo(sum);
R:>wscriptc.js
在linux或者windows下均可以通過node.js提供的運行環境來執行js腳本,例如:
R:>catd.js
varsum=0;
for(vari=0;i<10;i++){
sum+=i;
}
console.log(sum);
R:>noded.js
45
node提供了完成的平台開發環境,可以嘗試下. 需自行安裝
Ⅶ 腳本分幾種,用途都是什麼
腳本(script)是使用一種特定的描述性語言,依據一定的格式編寫的可執行文件,又稱作宏或批處理文件。腳本是批處理文件的延伸,是一種純文本保存的程序,一般來說的計算機腳本程序是確定的一系列控制計算機進行運算操作動作的組合,在其中可以實現一定的邏輯分支等。 腳本簡單地說就是一條條的文字命令,這些文字命令是可以看到的(如可以用記事本打開查看、編輯),腳本程序在執行時,是由系統的一個解釋器,將其一條條的翻譯成機器可識別的指令,並按程序順序執行。因為腳本在執行時多了一道翻譯的過程,所以它比二進製程序執行效率要稍低一些。 腳本通常可以由應用程序臨時調用並執行。各類腳本被廣泛地應用於網頁設計中,因為腳本不僅可以減小網頁的規模和提高網頁瀏覽速度,而且可以豐富網頁的表現,如動畫、聲音等。舉個最常見的例子,當點擊網頁上的Email地址時能自動調用Outlook Express或Foxmail這類郵箱軟體,就是通過腳本功能來實現的。也正因為腳本的這些特點,往往被一些別有用心的人所利用。例如在腳本中加入一些破壞計算機系統的命令,這樣當用戶瀏覽網頁時,一旦調用 這類腳本,便會使用戶的系統受到攻擊。所以用戶應根據對所訪問網頁的信任程度選擇安全等級,特別是對於那些本身內容就非法的網頁,更不要輕易允許使用腳本。通過「安全設置」對話框,選擇「腳本」選項下的各種設置就可以輕松實現對腳本的禁用和啟用。 計算機語言是為了各種目的和任務而開發的,一個常見任務就是把各種不同的已有組件連接起來以完成相關任務。大多腳本語言共性是:良好的快速開發,高效率的執行,解釋而非編譯執行,和其它語言編寫的程序組件之間通信功能很強大。 許多腳本語言用來執行一次性任務,尤其是系統管理方面。它可以把服務組件粘合起來,因此被廣泛用於GUI創建或者命令行,操作系統通常提供一些默認的腳本語言,即通常所謂shell腳本語言。 腳本通常以文本(如ASCII)保存,只在被調用時進行解釋或編譯。 有些腳本是為了特定領域設計的,但通常腳本都可以寫更通用的腳本。在大型項目中經常把腳本和其它低級編程語言一起使用,各自發揮優勢解決特定問題。腳本經常用於設計互動通信,它有許多可以單獨執行的命令,可以做很高級的操作,(如在傳統的Unix shell (sh)中,大多操作就是程序本身。) 這些高級命令簡化了代碼編寫過程。諸如內存自動管理和溢出檢查等性能問題可以不用考慮。在更低級或非腳本語言中,內存及變數管理和數據結構等耗費人工,為解決一個給定問題需要大量代碼,當然這樣能夠獲得更為細致的控制和優化。腳本缺少優化程序以提速或者降低內存的伸縮性。 綜上所述,腳本編程速度更快,且腳本文件明顯小於如同類C程序文件。這種靈活性是以執行效率為代價的。腳本通常是解釋執行的,速度可能很慢,且運行時更耗內存。在很多案例中,如編寫一些數十行的小腳本,它所帶來的編寫優勢就遠遠超過了運行時的劣勢,尤其是在當前程序員工資趨高和硬體成本趨低時。 然而,在腳本和傳統編程語言之間的界限越來越模糊,尤其是在一系列新語言及其集成暢出現時。在一些腳本語言中,有經驗的程序員可以進行大量優化工作。在大多現代系統中通常有多種合適的腳本語言可以選擇,所以推薦使用多種語言(包括C或匯編語言)編寫一種腳本。 常見的腳本語言:Scala、JavaScript,VBScript,ActionScript,MAX Script,ASP,JSP,PHP,SQL,Perl,Shell,python,Ruby,JavaFX,Lua,AutoIt等。 [編輯本段]與其他編程語言的關系及特點 1.腳本語言(JavaScript,VBscript等)介於HTML和C,C++,Java,C#等編程語言之間。 HTML通常用於格式化和鏈結文本。而編程語言通常用於向機器發出一系列復雜的指令。 2.腳本語言與編程語言也有很多相似地方,其函數與編程語言比較相象一些,其也涉及到變數。與編程語言之間最大的區別是編程語言的語法和規則更為嚴格和復雜一些. 3.與程序代碼的關系:腳本也是一種語言,其同樣由程序代碼組成。 註:腳本語言一般都有相應的腳本引擎來解釋執行。 他們一般需要解釋器才能運行。Python、JAVASCRIPT,ASP,PHP,PERL,Nuva都是腳本語言。C/C++編譯、鏈接後,可形成獨立執行的exe文件。 4.腳本語言是一種解釋性的語言,例如Python、vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以編譯成二進制代碼,以可執行文件的形式存在. 腳本語言不需要編譯,可以直接用,由解釋器來負責解釋。 5.腳本語言一般都是以文本形式存在,類似於一種命令. 舉個例子說,如果你建立了一個程序,叫aaa.exe,可以打開.aa為擴展名的文件. 你為.aa文件的編寫指定了一套規則(語法),當別人編寫了.aa文件後,你的程序用這種規則來理解編寫人的意圖,並作出回應.那麼,這一套規則就是腳本。 計算機腳本語言程序舉例 (1)JavaScript: ①用於HTML中: alert("Hello World") ②用於WSH中: WScript.Echo("Hello World") (2)ASP: <% Response.Write("Hello, world!") %> 或者: <% strHelloWorld = "Hello, world!" %> <%= strHelloWorld %> 或者簡單地寫成: <%= "Hello, world!" %> (3)PHP: <?php echo 'Hello, world!'; print 'Hello, world!'; ?> 或者 <?= "Hello World!"?> (4)PERL: #!/usr/local/bin/perl print "Hello, world!\n"; (5)Nuva: <.. "Hello, World!" Demo ..> <. //====================================== // Hello, World! (1) //====================================== ?? 'Hello, World!' /*====================================== Hello, World! (2) ======================================*/ function HelloWorld() ?? "Hello, World!"; end function HelloWorld(); /*====================================== Hello, World! (3) ======================================*/ class World() function Hello() ?? 'Hello, World!'; end function end class var n = World(); n.Hello(); .> (6)ActionScript: ①ActionScript 2.0版本: trace("Hello, world!"); ②ActionScript 3.0版本: package { import flash.display.TextField; import flash.display.MovieClip; import flash.filters.DropShadowFilter; public class HelloWorld extends MovieClip { public function HelloWorld() { var shad:DropShadowFilter = new DropShadowFilter(2, 45, 0x000000, 25, 3, 3, 2, 2); var txt:TextField = new TextField(); txt.textColor = 0xFFFFFF; txt.filters = [shad]; txt.width = 120; txt.x = Math.random()*300; txt.y = Math.random()*300; txt.selectable = false; txt.text = "Hello World! ["+Math.round(txt.x)+","+Math.round(txt.y)+"]"; addChild(txt); } } } (7)PostScript: PostScript是一種專門用來創建圖像的語言,常用於列印機。 /font /Courier findfont 24 scalefont font setfont 100 100 moveto (Hello World!) show showpage (8)AppleScript: say "Hello World!" (9)Bash: #!/usr/bin/env bash myvar="hello" myfunc() { local x local myvar="one two three" for x in $myvar do echo $x done } myfunc echo $myvar $x (10)Ruby #!/usr/bin/env ruby puts "Hello, world!"
Ⅷ 什麼是腳本語言腳本語言的優缺點
腳本語言又被稱為擴建的語言,或者動態語言,是一種編程語言,用來控制軟體應用程序,那麼你對腳本語言了解多少呢?以下是由我整理關於什麼是腳本語言的內容,希望大家喜歡!
腳本語言的定義
腳本語言是為了縮短傳統的編寫-編譯-鏈接-運行(edit-compile-link-run)過程而創建的計算機編程語言。此命名起源於一個腳本“screenplay”,每次運行都會使對話框逐字重復。早期的腳本語言經常被稱為批處理語言或工作控制語言。一個腳本通常是解釋運行而非編譯。雖然許多腳本語言都超越了計算機簡單任務自動化的領域,成熟到可以編寫精巧的程序,但仍然還是被稱為腳本。幾乎所有計算機系統的各個層次都有一種腳本語言。包括操作系統層,如計算機游戲,網路應用程序,文字處理文檔,網路軟體等。在許多方面,高級編程語言和腳本語言之間互相交叉,二者之間沒有明確的界限。一個腳本可以使得本來要用鍵盤進行的相互式操作自動化。一個Shell腳本主要由原本需要在命令行輸入的命令組成,或在一個文本編輯器中,用戶可以使用腳本來把一些常用的操作組合成一組序列。主要用來書寫這種腳本的語言叫做腳本語言。很多腳本語言實際上已經超過簡單的用戶命令序列的指令,還可以編寫更復雜的程序。
腳本語言的特點
1、腳本語言(JavaScript,VBscript等)介於HTML和C,C++,Java,C#等編程語言之間。HTML通常用於格式化和鏈接文本。而編程語言通常用於向機器發出一系列復雜的指令。
2、腳本語言與編程語言也有很多相似地方,其函數與編程語言比較相像一些,其也涉及到變數。與編程語言之間最大的區別是編程語言的語法和規則更為嚴格和復雜一些.
3、與程序代碼的關系:腳本也是一種語言,其同樣由程序代碼組成。
4、腳本語言是一種解釋性的語言,例如Python、vbscript,javascript,installshield script,ActionScript等等,它不象cc++等可以編譯成二進制代碼,以可執行文件的形式存在,腳本語言不需要編譯,可以直接用,由解釋器來負責解釋。
5、腳本語言一般都是以文本形式存在,類似於一種命令。
舉個例子說:如果建立了一個程序,叫aaa.exe,可以打開.aa為擴展名的文件,為.aa文件的編寫指定了一套規則(語法),當別人編寫了.aa文件後,自己的程序用這種規則來理解編寫人的意圖,並作出回應,那麼,這一套規則就是腳本語言。
6、相對於編譯型計算機編程語言:用腳本語言開發的程序在執行時,由其所對應的解釋器(或稱虛擬機)解釋執行。系統程序設計語言是被預先編譯成機器語言而執行的。腳本語言的主要特徵是:程序代碼即是腳本程序,亦是最終可執行文件。腳本語言可分為獨立型和嵌入型,獨立型腳本語言在其執行時完全依賴於解釋器,而嵌入型腳本語言通常在編程語言中(如C,C++,VB,Java等)被嵌入使用。
7、和系統程序設計語言相比:不同是腳本語言是被解釋而系統程序設計語言是被編譯。被解釋的語言由於沒有編譯時間而提供快速的轉換,通過允許用戶運行時編寫應用程序,而不需要耗時的編譯/打包過程。解釋器使應用程序更加靈活,腳本語言的代碼能夠被實時生成和執行。腳本語言通常都有簡單、易學、易用的特性,目的就是希望能讓程序設計師快速完成程序的編寫工作。
腳本語言的優缺點
優點
快速開發:腳本語言極大地簡化了“開發、部署、測試和調試”的周期過程。
容易部署:大多數腳本語言都能夠隨時部署,而不需要耗時的編譯/打包過程。
同已有技術的集成:腳本語言被Java或者COM這樣的組件技術所包圍,因此能夠有效地利用代碼。
易學易用:很多腳本語言的技術要求通常要低一些,因此能夠更容易地找到大量合適的技術人員。
動態代碼:腳本語言的代碼能夠被實時生成和執行,這是一項高級特性,在某些應用程序里(例如JavaScript里的動態類型)是很有用也是必需的。
缺點
腳本語言不夠全面:它們會要求一門“真正的”編程語言的存在,必須找一個資料庫驅動程序將其內置進腳本語言里。
腳本語言並不是軟體工程和構建代碼結構的最佳選擇,例如面向對象和基於組件的開發。