shell腳本語句可以執(zhí)行l(wèi)inux的操作語句。
linux相當(dāng)于網(wǎng)頁,shell相當(dāng)于java??梢越忉尵帉憟?zhí)行邏輯。
shell的開頭以:#!bin/sh
定義解析方式,不同的linuxe內(nèi)核解釋方式不同。大多數(shù)內(nèi)核支持sh(bash)方式。
執(zhí)行sh文件可以有多種方式:
? ? ? ? ? ? sh?a.sh
????????bash a.sh
?????????????????a.sh
嵌套式執(zhí)行,類似開辟一個線程,出現(xiàn)執(zhí)行無效,子線程改變的東西,父線程未發(fā)生改變。
? ? ?source a.sh
? ? ? ? ? ? ? ?. a.sh
當(dāng)前線程直接執(zhí)行
你沒看錯,有這么多中方式。
linux中存在環(huán)境變量的說法,和win一樣。
其中,子bash(一下為子、父線程)中,是無法使用父線程的局部環(huán)境變量的。
在子線程中修改父線程的環(huán)境變量,返回父線程,父線程的環(huán)境變量沒有改變。
env查看所有的全局環(huán)境變量。
使用win的cmd遠(yuǎn)程登錄ssh:ssh -p 22 root@162.14.112.7?
shell中的變量定義:
直接a=12,a="123"
很簡單,使用加$a,?直接定義的變量是局部的,使用:?export quxiao提高成全局,所有bash都可以使用、但是更改無效,只能更改局部的(就近原則嘛)。
子線程創(chuàng)建的局部變量,父線程無法使用。
撤銷變量:
?unset quxia
提高變量為全局:
readonly a
設(shè)置全局PQTH變量:
修改/etc/profile
加上需要添加的語句:
注意!一定要慎重修改,不要把已有的PATH路徑覆蓋了,不然所有命令都用不了了。
凡是能夠直接在終端執(zhí)行的命令,都在bin目錄下能夠找到。
運(yùn)行文件時,也可以將參數(shù)傳到文件中去,加上空格 參數(shù)。
其中 echo $1是將第一個參數(shù)拿出,以此類推。
echo $#是將參數(shù)的總個數(shù)
echo $* 是將全部參數(shù)當(dāng)做字符串拿出。
echo $@? 將參數(shù)拿出為數(shù)組。
需要進(jìn)行數(shù)據(jù)運(yùn)算時,方法有好幾種,我就記錄最方便的一種:
a=$[1+1]
使用$中括號進(jìn)行賦值,然后我們可以使用調(diào)用時傳入?yún)?shù),做一個類似計算的方法(.sh文件)
#!bin/bash
sum=$[$1+$2]
echo sum=$sum
一旦使用的$n拿取參數(shù),就必須傳指定個數(shù)的參數(shù),找不到參數(shù)會報錯。?
還有一些奇奇怪怪的變量:
- $$??//當(dāng)前進(jìn)程的進(jìn)程號碼(PID)
- $!??//后臺運(yùn)行的最后一個進(jìn)程的進(jìn)程號
- $???//最后一次執(zhí)行命令的返回狀態(tài),如果這個變量的值為0證明上一個命令正確執(zhí)行,如果不是 0 上一個命令沒有正確執(zhí)行
進(jìn)行邏輯判斷是,無法直接使用><=這些,將這些邏輯弄成了sh方法:
-lt????????小于????????-le 小于等于
-gt????????大于????????-ge 大于等于?
-eq? ? ? ? 等于? ? ? ? -ne 不等于
判斷文件其權(quán)限:
-w 寫
-r 讀
-x 執(zhí)行
case 選擇語句:
?for循環(huán)就及比較獨特:
文章來源:http://www.zghlxwxcb.cn/news/detail-623244.html
經(jīng)典1+n?文章來源地址http://www.zghlxwxcb.cn/news/detail-623244.html
到了這里,關(guān)于服務(wù)器的shell腳本的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!