建立shell指令碼檔案時,必須在檔案的第一行指明所使用的shell. 格式如下:
#!/bin/bash在普通的shell指令碼中,英鎊符號(#)用作注釋行. shell不處理shell指令碼中的注釋行.但是,shell指令碼檔案的第一行是個特例,#後面跟著感嘆號告訴shell執行下列指令碼的shell(可以使用bash shell,但用另乙個shell執行指令碼)
如果想將兩條命令一起執行,可以將他們放在同一行,並用分號將其隔開
#!/bin/bashecho命令可以顯示乙個簡單的文字字串,在 echo 後直接新增字串即可.# this script displays the date and who
's logged on
date
who# 1.編寫如上四行指令碼
# 2.將指令碼檔案所有目錄天驕到path環境變數中/使用絕對路徑或相對路徑 來執行指令碼
# 3.如果檔案缺失執行許可權,給檔案新增執行許可權後再重試(chmod u+x 指令碼檔名)
# 4.執行成功
預設情況下不需要使用引號來標記想要顯示的字串,如果在字串中使用了引號,有時會出現檔案
[-n] : 將echo命令結果和echo檔案字串顯示在同一行, 需要用引號包圍字串,同時確保在該字串末尾有個空格. 命令的輸出整好從字串輸出停止等待位置開始.
#!/bin/bash通過使用以美元符號開頭的環境變數可以從指令碼中引進這些環境變數.當字串中藥使用美元符$時,需在美元符前加反斜槓\echo -n "the time and date are: "
date
#!/bin/bash使用者變數可以是由不超過 20個字元的字母 數字或下劃線組成的文字字串.使用者變數區分大小寫, 值通過等號賦值給使用者變數. 在變數 等號 變數值之間不允許有空格echo "user info for userid: $user"
echo uid: $uid
echo home: $home
echo "the cost of the item is \$15"
shell指令碼自動為變數值確定資料型別,指令碼中定義的變數在shell指令碼的生命週期內保留它們的值,但是當shell指令碼完成時就被刪除了
當在賦值語句中使用變數value1的值時, 需使用美元符號,如果忘了使用美元符號指令碼會當成字串處理
value1=10value2=$value1
echo the resulting value is $value2
# 輸出: the resulting value is 10
value2=value1
echo the resulting value is $value2反引號允許將shell命令的輸出賦值給變數# 輸出: the resulting value is value1
#!/bin/bash重定向的最基本型別是通過一條命令將輸出傳送到檔案中.bash shell重定向為此使用大於號:command > outputfile重寫重定向(>)操作會建立乙個檔案(使用了預設的umask設定),並且將date命令的輸出重定向到所建立的檔案中.如果檔案已經存在就會重寫已經存在的檔案today=`date +%y%m%d`
ls /usr/bin -al > log.$today
# +%y%m%d 格式指示date命令使用兩位數來顯示年月日
# 2023年1月1日 執行指令碼會生成乙個log.020101 日誌檔案
追加重定向(>>)會將資料追加到資料夾中,使用兩個》
將乙個檔案的內容重定向到一條命令中
輸入重定向還有另一種方法,稱為內建輸入重定向.這種方法允許在命令列中而非檔案中為輸入重定向指定資料
內建輸入重定向符號是兩個小於號(<
command << marker次提示會為更多的資料繼續提示知道輸入文字標記. wc命令計算內建輸入重定向提供的資料的行, 單詞, 位元組的數目> data
> marker
wc << eof
> test string 1
> test string 1
> test string 1
> eof
# 輸出 3 9 42
有時需要將乙個命令的輸出傳送至另乙個命令的輸入. 使用重定向可以做到這一點,但是這有些笨拙
rpm -qa >rpm.list使用管道(|), 可以輕鬆地將rpm命令的輸出直接傳送給sort命令sort
#rpm命令用red hat軟體包管理系統(rpm)管理安裝在系統中的軟體包.
# 當與引數-qa一起使用時,它會生成已安裝軟體包的列表,但是未必以特定的順序顯示.
rpm -qa | sort# 命令中可以使用數量不限的管道數(行長度最多是255個字元).可以連續將命令的輸出傳送給其他命令已改進操作
# 由於sort命令的輸出急劇增大,可以使用一種文字分頁命令(less / more), 將輸出強制停留在每一屏的資料上
rpm -qa | sort | more
shell指令碼(二)
一 test條件判斷 如果表示式為true,返回0退出狀態,如果表示式為false,則返回非零退出狀態。test具有替代語法,使用括號 將表示式括起來,更易於閱讀 1。字串比較運算子 對兩個字串進行比較,相等則返回零推出狀態,不相等則返回非零退出狀態 對兩個字串進行比較,不相等則返回零退出狀態,相等...
linux第二節SHELL指令碼
1.shell指令碼的建立過程 shell指令碼就是放在乙個檔案中的一系列llinux命令和實用程式。shell指令碼固定格式如下 bin bash 注釋命令 用來解釋指令碼檔案,開頭為注釋,如果一行未完,可以在行尾加上 字元,表示與下一行合併為一行。2.shell中的特殊字元 1.萬用字元 萬用字...
linux的shell指令碼學習筆記(二)
標記 開始學習while迴圈 檢視本地的8080埠的應用是否已啟用 curl s o index.jsp m 2 localhost 8080 shop index.jsp bin bash n 0while n lt 5 do let n echo n done 迴圈讀取檔案的一行,然後輸出 re...