當前位置:首頁 » 操作系統 » forvarinLinux

forvarinLinux

發布時間: 2022-04-06 21:16:01

❶ 為什麼C語言用execl執行bash shell腳本會出現Exec format error

進行linux測試編寫腳本必少Shell腳本名稱隨便定義要綴名例寫abcsmartzip類名稱運行要鍵入./smartzip能運行腳本每行命令處用空格行第1部.Linux腳本編寫基礎1.1語基本介紹1.1.1程序必須面行始(必須文件第行):#!/bin/sh符號#!用告訴系統面參數用執行該文件程序例我使用/bin/sh執行程序編輯腳本要執行該腳本必須使其執行要使腳本執行:編譯chmod+xfilename才能用./filename運行1.1.2注釋進行shell編程#句表示注釋直行結束我真誠建議您程序使用注釋您使用注釋即使相間內沒使用該腳本您能短間內明白該腳本作用及工作原理1.1.3變數其編程語言您必須使用變數shell編程所變數都由字元串組並且您需要變數進行聲明要賦值給變數您寫:#!/bin/sh#變數賦值:a="helloworld"#現列印變數a內容:echo"Ais:"echo$a候變數名容易與其文字混淆比:num=2echo"thisisthe$numnd"並列印"thisisthe2nd"僅僅列印"thisisthe"shell搜索變數numnd值變數沒值使用花括弧告訴shell我要列印num變數:num=2echo"thisisthe${num}nd"列印:thisisthe2nd1.1.4環境變數由export關鍵字處理變數叫做環境變數我環境變數進行討論通情況僅僅登錄腳本使用環境變數1.1.5Shell命令流程式控制制shell腳本使用三類命令:1)Unix命令:雖shell腳本使用任意unix命令由些相更用命令些命令通用進行文件文字操作用命令語及功能echo"sometext":文字內容列印屏幕ls:文件列表wc–lfile:計算文件行數wc-wfile:計算文件單詞數wc-cfile:計算文件字元數cpsourcefiledestfile:文件拷貝mvoldnamenewname:重命名文件或移文件rmfile:刪除文件grep'pattern'file:文件內搜索字元串比:grep'searchstring'file.txtcut-bcolnumfile:指定欲顯示文件內容範圍並輸標准輸設備比:輸每行第5第9字元cut-b5-9file.txt千萬要cat命令混淆兩完全同命令catfile.txt:輸文件內容標准輸設備(屏幕)filesomefile:文件類型readvar:提示用戶輸入並輸入賦值給變數sortfile.txt:file.txt文件行進行排序uniq:刪除文本文件現行列比:sortfile.txt|uniqexpr:進行數運算Example:add2and3expr2"+"3find:搜索文件比:根據文件名搜索find.-namefilename-printtee:數據輸標准輸設備(屏幕)文件比:somecommand|teeoutfilebasenamefile:返包含路徑文件名比:basename/bin/tux返tuxdirnamefile:返文件所路徑比:dirname/bin/tux返/binheadfile:列印文本文件幾行tailfile:列印文本文件末尾幾行sed:Sed基本查找替換程序標准輸入(比命令管道)讀入文本並結輸標准輸(屏幕)該命令採用則表達式(見參考)進行搜索要shell通配符相混淆比:linuxfocus替換LinuxFocus:cattext.file|sed's/linuxfocus/LinuxFocus/'>newtext.fileawk:awk用文本文件提取欄位預設欄位割符空格使用-F指定其割符catfile.txt|awk-F,'{print$1","$3}'我使用作欄位割符同列印第第三欄位該文件內容:AdamBor,34,IndiaKerryMiller,22,USA命令輸結:AdamBor,IndiaKerryMiller,USA2)概念:管道,重定向backtick些系統命令真重要管道(|)命令輸作另外命令輸入grep"hello"file.txt|wc-lfile.txt搜索包含hello行並計算其行數grep命令輸作wc命令輸入您使用命令重定向:命令結輸文件標准輸(屏幕)>寫入文件並覆蓋舊文件>>加文件尾部保留舊文件內容反短斜線使用反短斜線命令輸作另外命令命令行參數命令:find.-mtime-1-typef-print用查找24(-mtime–2則表示48)內修改文件您想所查找文件打包則使用腳本:#!/bin/sh#Theticksarebackticks(`)notnormalquotes('):tar-zcvflastmod.tar.gz`find.-mtime-1-typef-print`3)流程式控制制1.if"if"表達式條件真則執行then面部:if.;then.elif.;then.else.fi數情況使用測試命令條件進行測試比比較字元串、判斷文件否存及否讀等等…通用"[]"表示條件測試注意空格重要要確保括弧空格[-f"somefile"]:判斷否文件[-x"/bin/ls"]:判斷/bin/ls否存並執行許可權[-n"$var"]:判斷$var變數否值["$a"="$b"]:判斷$a$b否相等執行mantest查看所測試表達式比較判斷類型直接執行腳本:#!/bin/shif["$SHELL"="/bin/bash"];thenecho"yourloginshellisthebash(bourneagainshell)"elseecho"yourloginshellisnotbashbut$SHELL"fi變數$SHELL包含登錄shell名稱我/bin/bash進行比較快捷操作符熟悉C語言朋友能喜歡面表達式:[-f"/etc/shadow"]&&echo""&&快捷操作符左邊表達式真則執行右邊語句您認邏輯運算與操作例表示/etc/shadow文件存則列印同或操作(||)shell編程用例:#!/bin/shmailfolder=/var/spool/mail/james[-r"$mailfolder"]''{echo"Cannotread$mailfolder";exit1;}echo"$mailfolderhasmailfrom:"grep"^From"$mailfolder該腳本首先判斷mailfolder否讀讀則列印該文件"From"行讀則或操作效列印錯誤信息腳本退問題我必須兩命令:-列印錯誤信息-退程序我使用花括弧匿名函數形式兩命令放起作命令使用般函數文提及用與或操作符我用if表達式作任何事情使用與或操作符更便利2.casecase:表達式用匹配給定字元串數字casein)dosomethinghere;;esac讓我看例file命令辨別給定文件文件類型比:filelf.gz返:lf.gz:gzipcompresseddata,deflated,originalfilename,lastmodified:MonAug2723:09:182001,os:Unix我利用點寫叫做smartzip腳本該腳本自解壓bzip2,gzipzip類型壓縮文件:#!/bin/shftype=`file"$1"`case"$ftype"in"$1:Ziparchive"*)unzip"$1";;"$1:gzipcompressed"*)gunzip"$1";;"$1:bzip2compressed"*)bunzip2"$1";;*)echo"File$";;esac您能注意我使用特殊變數$1該變數包含傳遞給該程序第參數值說我運行:smartziparticles.zip$1字元串articles.zip3.selsectselect表達式種bash擴展應用尤其擅於互動式使用用戶組同值進行選擇selectvarin;dobreakdone.now$varcanbeused.面例:#!/bin/shecho"WhatisyourfavouriteOS?"selectvarin"Linux""GnuHurd""FreeBSD""Other";dobreakdoneecho"Youhaveselected$var"面該腳本運行結:WhatisyourfavouriteOS?1)Linux2)GnuHurd3)FreeBSD4)Other#?1YouhaveselectedLinux4.looploop表達式:while;do.donewhile-loop運行直表達式測試真.關鍵字"break"用跳循環關鍵字continue用執行余部直接跳循環for-loop表達式查看字元串列表(字元串用空格隔)其賦給變數:forvarin.;do.done面例別列印ABC屏幕:#!/bin/shforvarinABC;doecho"varis$var"done面更用腳本showrpm其功能列印些RPM包統計信息:#!/bin/sh##USAGE:showrpmrpmfile1rpmfile2#EXAMPLE:showrpm/cdrom/RedHat/RPMS/*.rpmforrpmpackagein$*;doif[-r"$rpmpackage"];thenecho"===============$rpmpackage=============="rpm-qi-p$rpmpackageelseecho"ERROR:cannotreadfile$rpmpackage"fidone現第二特殊變數$*該變數包含所輸入命令行參數值您運行showrpmopenssh.rpmw3m.rpmwebgrep.rpm$*包含3字元串即openssh.rpm,w3m.rpmandwebgrep.rpm.5.引號向程序傳遞任何參數前程序擴展通配符變數所謂擴展意思程序通配符(比*)替換合適文件名變數替換變數值防止程序作種替換您使用引號:讓我看例假設前目錄些文件兩jpg文件mail.jpgtux.jpg1.2編譯SHELL腳本#ch#!/bin/shmod+xfilenamecho*.jpg∪緩螅梢醞ü淙耄?./filename執行您腳本列印"mail.jpgtux.jpg"結引號(單引號雙引號)防止種通配符擴展:#!/bin/shecho"*.jpg"echo'*.jpg'列印"*.jpg"兩單引號更嚴格些防止任何變數擴展雙引號防止通配符擴展允許變數擴展#!/bin/shecho$SHELLecho"$SHELL"echo'$SHELL'運行結:/bin/bash/bin/bash$SHELL種防止種擴展使用轉義字元——反斜桿:echo/*.jpgecho/$SHELL輸:*.jpg$SHELL6.Heredocuments要幾行文字傳遞給命令heredocuments(譯者註:目前沒見該詞適合翻譯)種錯每腳本寫段幫助性文字用我四heredocuments必用echo函數行行輸"Heredocument"heredocument段特殊目代碼塊.使用I/O重定向形式命令序列傳遞交互程序或者命令,比ftp,cat,或者ex文本編輯器.1COMMANDlimitstring用劃定命令序列范圍(譯者注:兩相同limitstring間命令序列).特殊符號heredocument形式看:1#!/bin/bash2interactive-program選擇名字非詭異limitstring避免命令列表limitstring重名問題.面例該例我文件進行重命名並且使用heredocuments列印幫助:#!/bin/sh#wehavelessthan3arguments.Printthehelptext:if[$#-lt3];thencat4)函數您寫些稍微復雜些程序您發現程序能幾使用相同代碼並且您發現我使用函數便函數:functionname(){#insidethebody$#$2thesecondbody}您需要每程序始函數進行聲明面叫做xtitlebar腳本使用腳本您改變終端窗口名稱使用叫做help函數您看定義函數使用兩#!/bin/sh#vim:setsw=4ts=4et:help(){catshiftby2--)shift;break;;#endofoptions-*)echo"error:nosuchoption$1.-hforhelp";exit1;;*)break;;esacdoneecho"opt_fis$opt_f"echo"opt_lis$opt_l"echo"firstargis$1"echo"2ndargis$2"您運行該腳本:cmdparser-lhello-f---somefile1somefile2返結:opt_fis1opt_lishellofirstargis-somefile12ndargissomefile2腳本何工作呢腳本首先所輸入命令行參數進行循環輸入參數與case表達式進行比較匹配則設置變數並且移除該參數根據unix系統慣例首先輸入應該包含減號參數.第2部實例現我討論編寫腳本般步驟任何優秀腳本都應該具幫助輸入參數並且寫偽腳本(framework.sh)該腳本包含數腳本都需要框架結構非錯主意候寫新腳本我需要執行命令:cpframework.shmyscript再插入自函數讓我再看兩例:(1)二進制十進制轉換腳本b2d二進制數(比1101)轉換相應十進制數用expr命令進行數運算例:#!/bin/sh#vim:setsw=4ts=4et:help(){cat第3部:調試簡單調試命令使用echo命令您使用echo任何懷疑錯列印任何變數值絕數shell程序員要花費80%間調試程序原Shell程序處於需要重新編譯插入echo命令需要少間shell真實調試模式腳本"strangescript"錯誤您進行調試:sh-xstrangescript執行該腳本並顯示所變數值shell需要執行腳本檢查語模式使用:sh-nyour_script返所語錯誤調試shell程序程用戶剛編寫完Shell程序避免錯誤我利用Bsh提供跟蹤選項該選項顯示剛剛執行命令及參數用戶通set命令打-x選項或啟Shell使用-x選項Shell設置跟蹤模式例面代碼ice_tx:if[$#-eq0]thenecho"usage:sumintsintegerlist"exit1fisum=0until[$#-eq0]dosum='expr$sum+$1'shiftdoneecho$sum我用跟蹤模式運行:$sh-xice_tx234結顯示:+[3-eq0]+sum=0+[3-eq0]+expr0+2+sum=2+shift+[2-eq0]+expr2+3+sum=5+shift+[1-eq0]+expr5+4+sum=9+[0-eq0]+echo99面看跟蹤模式Shell顯示執行每條命令及該命令使用變數替換參數值些控制字if、then、until等沒顯示

❷ 求助:如何在shell腳本中添加寫日誌的功能

如何編寫一個shell腳本本文結合大量實例闡述如何編寫一個shell腳本。為什麼要進行shell編程在Linux系統中,雖然有各種各樣的圖形化介面工具,但是sell仍然是一個非常靈活的工具。Shell不僅僅是命令的收集,而且是一門非常棒的編程語言。您可以通過使用shell使大量的任務自動化,shell特別擅長系統管理任務,尤其適合那些易用性、可維護性和便攜性比效率更重要的任務。下面,讓我們一起來看看shell是如何工作的:建立一個腳本Linux中有好多中不同的shell,但是通常我們使用bash(bourneagainshell)進行shell編程,因為bash是免費的並且很容易使用。所以在本文中筆者所提供的腳本都是使用bash(但是在大多數情況下,這些腳本同樣可以在bash的大姐,bourneshell中運行)。如同其他語言一樣,通過我們使用任意一種文字編輯器,比如nedit、kedit、emacs、vi等來編寫我們的shell程序。程序必須以下面的行開始(必須方在文件的第一行):#!/bin/sh符號#!用來告訴系統它後面的參數是用來執行該文件的程序。在這個例子中我們使用/bin/sh來執行程序。當編輯好腳本時,如果要執行該腳本,還必須使其可執行。要使腳本可執行:chmod+xfilename然後,您可以通過輸入:./filename來執行您的腳本。注釋在進行shell編程時,以#開頭的句子表示注釋,直到這一行的結束。我們真誠地建議您在程序中使用注釋。如果您使用了注釋,那麼即使相當長的時間內沒有使用該腳本,您也能在很短的時間內明白該腳本的作用及工作原理。變數在其他編程語言中您必須使用變數。在shell編程中,所有的變數都由字元串組成,並且您不需要對變數進行聲明。要賦值給一個變數,您可以這樣寫:變數名=值取出變數值可以加一個美元符號($)在變數前面:#!/bin/sh#對變數賦值:a="helloworld"#現在列印變數a的內容:echo"Ais:"echo$a在您的編輯器中輸入以上內容,然後將其保存為一個文件first。之後執行chmod+xfirst使其可執行,最後輸入./first執行該腳本。這個腳本將會輸出:Ais:helloworld有時候變數名很容易與其他文字混淆,比如:num=2echo"thisisthe$numnd"這並不會列印出"thisisthe2nd",而僅僅列印"thisisthe",因為shell會去搜索變數numnd的值,但是這個變數時沒有值的。可以使用花括弧來告訴shell我們要列印的是num變數:num=2echo"thisisthe${num}nd"這將列印:thisisthe2nd有許多變數是系統自動設定的,這將在後面使用這些變數時進行討論。如果您需要處理數學表達式,那麼您需要使用諸如expr等程序(見下面)。除了一般的僅在程序內有效的shell變數以外,還有環境變數。由export關鍵字處理過的變數叫做環境變數。我們不對環境變數進行討論,因為通常情況下僅僅在登錄腳本中使用環境變數。Shell命令和流程式控制制在shell腳本中可以使用三類命令:1)Unix命令:雖然在shell腳本中可以使用任意的unix命令,但是還是由一些相對更常用的命令。這些命令通常是用來進行文件和文字操作的。常用命令語法及功能echo"sometext":將文字內容列印在屏幕上ls:文件列表wc–lfilewc-wfilewc-cfile:計算文件行數計算文件中的單詞數計算文件中的字元數cpsourcefiledestfile:文件拷貝mvoldnamenewname:重命名文件或移動文件rmfile:刪除文件grep'pattern'file:在文件內搜索字元串比如:grep'searchstring'file.txtcut-bcolnumfile:指定欲顯示的文件內容範圍,並將它們輸出到標准輸出設備比如:輸出每行第5個到第9個字元cut-b5-9file.txt千萬不要和cat命令混淆,這是兩個完全不同的命令catfile.txt:輸出文件內容到標准輸出設備(屏幕)上filesomefile:得到文件類型readvar:提示用戶輸入,並將輸入賦值給變數sortfile.txt:對file.txt文件中的行進行排序uniq:刪除文本文件中出現的行列比如:sortfile.txt|uniqexpr:進行數學運算Example:add2and3expr2"+"3find:搜索文件比如:根據文件名搜索find.-namefilename-printtee:將數據輸出到標准輸出設備(屏幕)和文件比如:somecommand|teeoutfilebasenamefile:返回不包含路徑的文件名比如:basename/bin/tux將返回tuxdirnamefile:返迴文件所在路徑比如:dirname/bin/tux將返回/binheadfile:列印文本文件開頭幾行tailfile:列印文本文件末尾幾行sed:Sed是一個基本的查找替換程序。可以從標准輸入(比如命令管道)讀入文本,並將結果輸出到標准輸出(屏幕)。該命令採用正則表達式(見參考)進行搜索。不要和shell中的通配符相混淆。比如:將linuxfocus替換為LinuxFocus:cattext.file|sed's/linuxfocus/LinuxFocus/'>newtext.fileawk:awk用來從文本文件中提取欄位。預設地,欄位分割符是空格,可以使用-F指定其他分割符。catfile.txt|awk-F,'{print$1","$3}'這里我們使用,作為欄位分割符,同時列印第一個和第三個欄位。如果該文件內容如下:AdamBor,34,IndiaKerryMiller,22,USA命令輸出結果為:AdamBor,IndiaKerryMiller,USA2)概念:管道,重定向和backtick這些不是系統命令,但是他們真的很重要。管道(|)將一個命令的輸出作為另外一個命令的輸入。grep"hello"file.txt|wc-l在file.txt中搜索包含有」hello」的行並計算其行數。在這里grep命令的輸出作為wc命令的輸入。當然您可以使用多個命令。重定向:將命令的結果輸出到文件,而不是標准輸出(屏幕)。>寫入文件並覆蓋舊文件>>加到文件的尾部,保留舊文件內容。反短斜線使用反短斜線可以將一個命令的輸出作為另外一個命令的一個命令行參數。命令:find.-mtime-1-typef-print用來查找過去24小時(-mtime–2則表示過去48小時)內修改過的文件。如果您想將所有查找到的文件打一個包,則可以使用以下腳本:#!/bin/sh#Theticksarebackticks(`)notnormalquotes('):tar-zcvflastmod.tar.gz`find.-mtime-1-typef-print`3)流程式控制制"if"表達式如果條件為真則執行then後面的部分:if.;then.elif.;then.else.fi大多數情況下,可以使用測試命令來對條件進行測試。比如可以比較字元串、判斷文件是否存在及是否可讀等等…通常用"[]"來表示條件測試。注意這里的空格很重要。要確保方括弧的空格。[-f"somefile"]:判斷是否是一個文件[-x"/bin/ls"]:判斷/bin/ls是否存在並有可執行許可權[-n"$var"]:判斷$var變數是否有值["$a"="$b"]:判斷$a和$b是否相等執行mantest可以查看所有測試表達式可以比較和判斷的類型。直接執行以下腳本:#!/bin/shif["$SHELL"="/bin/bash"];thenecho"yourloginshellisthebash(bourneagainshell)"elseecho"yourloginshellisnotbashbut$SHELL"fi變數$SHELL包含了登錄shell的名稱,我們和/bin/bash進行了比較。快捷操作符熟悉C語言的朋友可能會很喜歡下面的表達式:[-f"/etc/shadow"]&&echo""這里&&就是一個快捷操作符,如果左邊的表達式為真則執行右邊的語句。您也可以認為是邏輯運算中的與操作。上例中表示如果/etc/shadow文件存在則列印」」。同樣或操作(||)在shell編程中也是可用的。這里有個例子:#!/bin/shmailfolder=/var/spool/mail/james[-r"$mailfolder"]''{echo"Cannotread$mailfolder";exit1;}echo"$mailfolderhasmailfrom:"grep"^From"$mailfolder該腳本首先判斷mailfolder是否可讀。如果可讀則列印該文件中的"From"一行。如果不可讀則或操作生效,列印錯誤信息後腳本退出。這里有個問題,那就是我們必須有兩個命令:-列印錯誤信息-退出程序我們使用花括弧以匿名函數的形式將兩個命令放到一起作為一個命令使用。一般函數將在下文提及。不用與和或操作符,我們也可以用if表達式作任何事情,但是使用與或操作符會更便利很多。case表達式可以用來匹配一個給定的字元串,而不是數字。casein)dosomethinghere;;esac讓我們看一個例子。file命令可以辨別出一個給定文件的文件類型,比如:filelf.gz這將返回:lf.gz:gzipcompresseddata,deflated,originalfilename,lastmodified:MonAug2723:09:182001,os:Unix我們利用這一點寫了一個叫做smartzip的腳本,該腳本可以自動解壓bzip2,gzip和zip類型的壓縮文件:#!/bin/shftype=`file"$1"`case"$ftype"in"$1:Ziparchive"*)unzip"$1";;"$1:gzipcompressed"*)gunzip"$1";;"$1:bzip2compressed"*)bunzip2"$1";;*)error"File$";;esac您可能注意到我們在這里使用了一個特殊的變數$1。該變數包含了傳遞給該程序的第一個參數值。也就是說,當我們運行:smartziparticles.zip$1就是字元串articles.zipselect表達式是一種bash的擴展應用,尤其擅長於互動式使用。用戶可以從一組不同的值中進行選擇。selectvarin;dobreakdone.now$varcanbeused.下面是一個例子:#!/bin/shecho"WhatisyourfavouriteOS?"selectvarin"Linux""GnuHurd""FreeBSD""Other";dobreakdoneecho"Youhaveselected$var"下面是該腳本運行的結果:WhatisyourfavouriteOS?1)Linux2)GnuHurd3)FreeBSD4)Other#?1YouhaveselectedLinux您也可以在shell中使用如下的loop表達式:while;do.donewhile-loop將運行直到表達式測試為真。.關鍵字"break"用來跳出循環。而關鍵字」continue」用來不執行餘下的部分而直接跳到下一個循環。for-loop表達式查看一個字元串列表(字元串用空格分隔)然後將其賦給一個變數:forvarin.;do.done在下面的例子中,將分別列印ABC到屏幕上:#!/bin/shforvarinABC;doecho"varis$var"done下面是一個更為有用的腳本showrpm,其功能是列印一些RPM包的統計信息:#!/bin/sh##USAGE:showrpmrpmfile1rpmfile2#EXAMPLE:showrpm/cdrom/RedHat/RPMS/*.rpmforrpmpackagein$*;doif[-r"$rpmpackage"];thenecho"===============$rpmpackage=============="rpm-qi-p$rpmpackageelseecho"ERROR:cannotreadfile$rpmpackage"fidone這里出現了第二個特殊的變數$*,該變數包含了所有輸入的命令行參數值。如果您運行showrpmopenssh.rpmw3m.rpmwebgrep.rpm此時$*包含了3個字元串,即openssh.rpm,w3m.rpmandwebgrep.rpm.引號在向程序傳遞任何參數之前,程序會擴展通配符和變數。這里所謂擴展的意思是程序會把通配符(比如*)替換成合適的文件名,它變數替換成變數值。為了防止程序作這種替換,您可以使用引號:讓我們來看一個例子,假設在當前目錄下有一些文件,兩個jpg文件,mail.jpg和tux.jpg。#!/bin/shecho*.jpg這將列印出"mail.jpgtux.jpg"的結果。引號(單引號和雙引號)將防止這種通配符擴展:#!/bin/shecho"*.jpg"echo'*.jpg'這將列印"*.jpg"兩次。單引號更嚴格一些。它可以防止任何變數擴展。雙引號可以防止通配符擴展但允許變數擴展。#!/bin/shecho$SHELLecho"$SHELL"echo'$SHELL'運行結果為:/bin/bash/bin/bash$SHELL最後,還有一種防止這種擴展的方法,那就是使用轉義字元——反斜桿:echo*.jpgecho$SHELL這將輸出:*.jpg$SHELLHeredocuments當要將幾行文字傳遞給一個命令時,heredocuments(譯者註:目前還沒有見到過對該詞適合的翻譯)一種不錯的方法。對每個腳本寫一段幫助性的文字是很有用的,此時如果我們四有那個heredocuments就不必用echo函數一行行輸出。一個"Heredocument"以shiftby2--)shift;break;;#endofoptions-*)echo"error:nosuchoption$1.-hforhelp";exit1;;*)break;;esacdoneecho"opt_fis$opt_f"echo"opt_lis$opt_l"echo"firstargis$1"echo"2ndargis$2"您可以這樣運行該腳本:cmdparser-lhello-f---somefile1somefile2返回的結果是:opt_fis1opt_lishellofirstargis-somefile12ndargissomefile2這個腳本是如何工作的呢?腳本首先在所有輸入命令行參數中進行循環,將輸入參數與case表達式進行比較,如果匹配則設置一個變數並且移除該參數。根據unix系統的慣例,首先輸入的應該是包含減號的參數。實例一般編程步驟現在我們來討論編寫一個腳本的一般步驟。任何優秀的腳本都應該具有幫助和輸入參數。並且寫一個偽腳本(framework.sh),該腳本包含了大多數腳本都需要的框架結構,是一個非常不錯的主意。這時候,在寫一個新的腳本時我們只需要執行一下命令:cpframework.shmyscript然後再插入自己的函數。讓我們再看兩個例子:二進制到十進制的轉換腳本b2d將二進制數(比如1101)轉換為相應的十進制數。這也是一個用expr命令進行數學運算的例子:#!/bin/sh#vim:setsw=4ts=4et:help(){cat<

熱點內容
自己在家搭建伺服器 發布:2024-11-15 04:25:04 瀏覽:648
箱娘免解壓 發布:2024-11-15 04:24:58 瀏覽:38
熱血寶寶腳本 發布:2024-11-15 04:23:31 瀏覽:225
正確的賬號格式密碼是什麼樣子的 發布:2024-11-15 04:18:41 瀏覽:24
可以升級方舟編譯器的手機 發布:2024-11-15 04:18:39 瀏覽:694
地漏訪問 發布:2024-11-15 04:08:13 瀏覽:388
朗逸豪華版wifi密碼多少 發布:2024-11-15 04:03:09 瀏覽:664
安卓系統可安裝什麼電視直播軟體 發布:2024-11-15 04:01:41 瀏覽:158
安卓如何開啟蜂窩數據 發布:2024-11-15 03:19:59 瀏覽:887
androidedittext移動 發布:2024-11-15 03:14:28 瀏覽:471