Ⅰ 如何利用shell腳本中的eval命令來構造"智能"命令
今天主要介紹一個shell腳本中比較少見的命令--eval
功能說明 :重新運算求出參數的內容。
語 法 :eval [參數]
補充說明 :eval可讀取一連串的參數,然後再依參數本身的特性來執行。
參 數 :參數不限數目,彼此之間用分號分開。
eval命令將會首先掃描命令行進行所有的替換,然後再執行命令。該命令使用於那些一次掃描無法實現其功能的變數。該命令對變數進行兩次掃描。這些需要進行兩次掃描的變數有時候被稱為復雜變數。eval也可以用於回顯簡單變數,不一定是復雜變數。
eval的作用是再次執行命令行處理,也就是說,對一個命令行,執行兩次命令行處理。這個命令要用好,就要費一定的功夫。下面用幾個例子幫助大家理解下。
1、eval一個命令
eval echo相當於echo
2、兩次掃描
該命令適用於依次掃描無法完成其功能的變數。
第一步:對eval後面的命令進行掃描,執行變數替換,普通命令保留
第二步:執行變數替換後的命令串
3、獲得最後一個參數
4、用eval技巧實現shell的控制結構for
用eval技巧實現shell的控制結構for
輸出結果:
注意:bash里有兩個很特殊的變數,它們保存了參數列表。
這里我使用了函數遞歸以及eval實現了for結構。
當執行eval $@時,它經歷了步驟如下:
第1步,分割成eval $@
第6步,擴展$@為hostname
第11步,找到內置命令eval
重復一次命令行處理,第11步,找到hostname命令,執行。
eval是對Bash Shell命令行處理規則的靈活應用,進而構造"智能"命令實現復雜的功能。上面提及的命令是eval其中一個很普通的應用,它重復了1次命令行參數傳遞過程,純粹地執行命令的命令。其實它是bash的難點,是高級bash程序員的必修技能。
Ⅱ 如何在 Linux 啟動時自動執行命令或腳本
Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。有用戶想要在Linux啟動時候自動執行命令腳本,應該怎麼設置呢?這篇文章主要介紹了詳解如何在 Linux 啟動時自動執行命令或腳本,主要有兩種方式,具有一定的參考價值,感興趣的小夥伴們可以參考一下。
方法步驟
在啟動時執行 Linux 腳本
有兩種傳統的方法可以實現在啟動時執行命令或腳本:
方法 #1 - 使用 cron 任務
除了常用格式(分 / 時 / 日 / 月 / 周)外,cron 調度器還支持 @reboot 指令。這個指令後面的參數是腳本(啟動時要執行的那個腳本)的絕對路徑。
然而,這種方法需要注意兩點:
a) cron 守護進程必須處於運行狀態(通常情況下都會運行),同時
b) 腳本或 crontab 文件必須包含需要的環境變數(如果有的話,參考 StackOverflow 獲取更多詳細內容)。
方法 #2 - 使用 /etc/rc.d/rc.local
這個方法對於 systemd-based 發行版 Linux 同樣有效。不過,使用這個方法,需要授予 /etc/rc.d/rc.local 文件執行許可權:
# chmod +x /etc/rc.d/rc.local
然後在這個文件底部添加腳本。
下圖說明如何分別使用 cron 任務和 rc.local 運行兩個示例腳本(/home/gacanepa/script1.sh 和 /home/gacanepa/script2.sh)。
script1.sh:
#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
script2.sh:
#!/bin/bash
SITE="Tecmint.com"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt
*啟動時執行 Linux 腳本 *
記住,一定要提前給兩個示例腳本授予執行許可權:
$ chmod +x /home/gacanepa/script1.sh
$ chmod +x /home/gacanepa/script2.sh
在登錄或注銷時執行 Linux 腳本
要在登錄或注銷時執行腳本,分別需要使用 ~.bash_profile 和 ~.bash_logout 文件。多數情況下,後者需要手動創建。在每個文件的底部,添加調用腳本代碼,如前面例中所示,就可以實現這個功能。
補充:Linux基本命令
1.ls命令:
格式::ls [選項] [目錄或文件]
功能:對於目錄,列出該目錄下的所有子目錄與文件;對於文件,列出文件名以及其他信息。
常用選項:
-a :列出目錄下的所有文件,包括以 . 開頭的隱含文件。
-d :將目錄像文件一樣顯示,而不是顯示其他文件。
-i :輸出文件的i節點的索引信息。
-k :以k位元組的形式表示文件的大小。
-l :列出文件的詳細信息。
-n :用數字的UID,GID代替名稱。
-F : 在每個文件名後面附上一個字元以說明該文件的類型,“*”表示可執行的普通文 件;“/”表示目錄;“@”表示符號鏈接;“l”表示FIFOS;“=”表示套接字。
2.cd命令
格式:cd [目錄名稱]
常用選項:
cd .. 返回上一級目錄。
cd ../.. 將當前目錄向上移動兩級。
cd - 返回最近訪問目錄。
3.pwd命令
格式: pwd
功能:顯示出當前工作目錄的絕對路徑。
相關閱讀:Linux主要特性
完全兼容POSIX1.0標准
這使得可以在Linux下通過相應的模擬器運行常見的DOS、Windows的程序。這為用戶從Windows轉到Linux奠定了基礎。許多用戶在考慮使用Linux時,就想到以前在Windows下常見的程序是否能正常運行,這一點就消除了他們的疑慮。
多用戶、多任務
Linux支持多用戶,各個用戶對於自己的文件設備有自己特殊的權利,保證了各用戶之間互不影響。多任務則是現在電腦最主要的一個特點,Linux可以使多個程序同時並獨立地運行。
良好的界面
Linux同時具有字元界面和圖形界面。在字元界面用戶可以通過鍵盤輸入相應的指令來進行操作。它同時也提供了類似Windows圖形界面的X-Window系統,用戶可以使用滑鼠對其進行操作。在X-Window環境中就和在Windows中相似,可以說是一個Linux版的Windows。
支持多種平台
Ⅲ android手機指令對應的信息用代碼執行顯示,如輸入:*#06#可以顯示IMEI串碼,不知道程序要調用什麼代碼
程序要調用使用代碼為*#*#4636#*#* 可以進入工程模式,可以開手機網關,也可以查手機電池信息 是否原裝。安卓手機系統代碼命令有以下方法:
1、*#*#4636#*#* 顯示手機信息、電池信息、電池記錄、使用統計數據、WIFI信息
2*#*#7780#*#* 重設為原廠設定,不會刪除預設程序及SD卡檔案
3、*2667*3855# 重設為原廠設定,會刪除SD卡所有檔案
4、*#*#34971539#*#* 顯示相機相機韌體版本,或更新相機韌體
5、*#*#7594#*#* 當長按關機按鈕時,會出現一個切換手機模式的窗口,可以用這個代碼,直接變成關機按鈕
6、*#*#273283*255*663282*#*#* 開啟一個能讓你備份媒體文件的地方,例如相片、聲音等
7、*#*#197328640#*#* 啟動服務模式,可以測試手機部分設置及更改設定WLAN、GPS及藍牙測試代碼
8、*#*#232338#*#* 顯示WIFI MAC地址
9、*#*#1472365#*#* GPS測試
10、*#*#1575#*#* 其他GPS測試
11、*#*#232331#*# 藍牙測試
12、*#*#232337#*# 顯示藍牙裝置地址
13、*#*#8255#*#* 啟動GTALK服務監視器
各項硬體測試
1、*#*#0283#*#* Packet Loopback
2、*#*#0*#*#* LCD測試
3、*#*#0842#*#* 裝置測試,如震動、亮度
4、*#*#2663#*#* 觸控屏幕版本
5、*#*#2664#*#* 觸控屏幕測試
6、*#*#0588#*#* 接近感應器測試
7、*#*#3264#*#* 內存版本
8、*#06# 顯示手機原廠出廠串號(移動通信國際識別碼)