今天在linux上寫指令碼什麼的碰到了一點問題,就心血來潮,記一下今天碰到的問題。
首先是完善指令碼的時候使用到了if語句,格式大概這樣:
if [something];then
code
elif [anotherthing];then
code
else
code
fi
然後使用了乙個-n引數判空,使用的時候遇到了乙個報錯
[:too many arguments
改為if [ -n "$sign" ]
問題解決
原因是,使用單純的$sign
拉取的是一串字元,直接放到判斷條件裡,if語句就以為每個單詞都是乙個變數,加上「」後,就是乙個字串了。
檔案第一行
#! / bin/sh
解釋:#! —->告訴系統後面的引數是用來執行該檔案的程式,在這裡我們使用/ bin / sh
來執行指令碼,也可以使用bash
指令碼執行需要許可權
chmod u+x 指令碼檔名
即可./指令碼檔名
—— 執行指令碼
雖然我在指令碼最後一行使用了
cd /
但是指令碼執行完畢還是在指令碼的當前路徑下,沒有變化,這裡使用的是./*.sh
命令使用的。
這裡解釋為什麼兩種執行方式會出現差異。
首先,./*.sh
執行指令碼必須要有相應的檔案許可權,否則無法執行;而使用source
(也就是.
)不需要檔案許可權。
其次,source
執行指令碼,是在當前指令碼程序下執行的,所以,使用source
執行指令碼,就是純粹的命令堆疊,什麼命令都和手敲沒什麼區別。
但是使用./*.sh
的方式執行指令碼,是在當前指令碼程序下建立了乙個子shell執行指令碼,該子shell繼承父shell的環境變數,但子shell新建的、改變的變數不會被帶回父shell,除非使用export
。
這就好比,你的指令碼執行後,指令碼本身有對應的path
變數,用來儲存你現在的當前路徑,然後它有新建乙個子shell,來執行你在指令碼中寫的命令,操作都可以正常執行,然後子shell執行最後一句cd
,之後子shell結束,回到父shell,然後父shell通過path
變數回到你的指令碼所在路徑,父shell結束,最後整個指令碼執行完畢。(不知道理解是否有誤,這塊有點繞,剛開始沒讀懂)
location ~ .*.(js|css)$
然後就搞定了。。。
這裡~表示後面是乙個正規表示式,相當於乙個識別符號
.
代表任意字元
*
代表重複多次
後面那個.
是檔案字尾帶的那個點
|
代表選擇,就是或
$
代表的是字串結束
再一次證明了學好正則的重要性,需要花點時間把這塊知識空缺補充一下。。。
nohup 你的shell命令 &
這裡面最後的&
是關鍵。
然後檢視任務使用命令job
。
1.echo 在顯示器上顯示一段文字
2.sudo netstat -antup 檢視伺服器各埠使用情況
3.ps -ef|grep 程序名 查詢相關程序的運**況
4.使用xshell的時候有個清屏命令,ctrl+l 清屏,將螢幕滾動到顯示屏最上方
5.|
管道命令,是將乙個命令的標準輸出管道為另外乙個命令的標準輸入
6.grep
命令是一種強大的文字搜尋工具,全稱是global regular expression print,它能在檔案中搜尋符合要求的文字,並把匹配的行列印出來。
使用方法是grep 引數 查詢條件 檔名
。
7.>
命令和>>
簡單說>
是覆蓋,>>
是追加.
>
是定向輸出到檔案,如果檔案不存在,就建立檔案;如果檔案存在,就將其清空;
>>
是將輸出內容追加到目標檔案中。如果檔案不存在,就建立檔案;如果檔案存在,則將新的內容追加到那個檔案的末尾,該檔案中的原有內容不受影響。
8.awk
命令
awk是乙個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。
awk工作流程是這樣的:讀入有』\n』換行符分割的一條記錄,然後將記錄按指定的域分隔符劃分域,填充域,$0
則表示所有域,$1
表示第乙個域,$n
表示第n個域。預設域分隔符是」空白鍵」 或 「[tab]鍵」
今天就這些,以後在加料吧,爭取燉好這鍋雜魚湯:)
linux工具命令總結雜雜雜
pwd 當前工作目錄 tar zxvf 解壓tar zcvf 壓縮檔案名 要壓縮檔案1 要壓縮檔案2 壓縮上傳檔案 rz輸入sudo yum y install lrzsz 安裝 輸入rz 即可上傳 在scurecrt alt p 在scurecrt alt p 在原會話cd 到要上傳的目錄 然後在...
PHP面試題之小雜魚
這裡的題目都是比較老的,但是做筆試題時經常碰到,因為這些題目比較凌亂,考的知識點不好分類,就放一塊了 題目 最少 實現求3個數的最大值 三目運算子實現 function getmax a,b,c echo getmax 3,9,6 題目 列印前一天的時間 格式 2015年10月15日 11 09 3...
js知識整理 雜)
mapactions stage 3 物件展開運算子,mapactions函式返回乙個物件,然後對返回物件使用展開符 解構 可以快速取得陣列或者物件當中的元素或者屬性,無需藉由arr x 或者obj key 等方式進行賦值 var a,b,c arr 變數名與物件屬性名不一致解構 var obj v...