1. linux的shell腳本中的set是什麼意思怎麼理解
set命令作用主要是顯示系統中已經存在的shell變數,以及設置shell變數的新變數值。使用set更改shell特性時,符號"+"和"-"的作用分別是打開和關閉指定的模式。set命令不能夠定義新的shell變數。如果要定義新的變數,可以使用declare命令以變數名=值的格式進行定義即可。使用:set(選項)(參數)
例如:
declare mylove='Visual C++' #定義新環境變數
再使用set命令將新定義的變數輸出為環境變數,輸入如下命令: set -a mylove
標示已修改的變數,以供輸出至環境變數。
-b:使被中止的後台程序立刻回報執行狀態
-C:轉向所產生的文件無法覆蓋已存在的文件
-d:Shell預設會用雜湊表記憶使用過的指令,以加速指令的執行。使用-d參數可取消。
-e:若指令傳回值不等於0,則立即退出shell。
-f:取消使用通配符。
-h:自動記錄函數的所在位置。
-H Shell:可利用"!"加<指令編號>的方式來執行history中記錄的指令。
-k:指令所給的參數都會被視為此指令的環境變數。
-l:記錄for循環的變數名稱。
-m:使用監視模式。
-n:只讀取指令,而不實際執行。
-p:啟動優先順序模式。
-P:啟動-P參數後,執行指令時,會以實際的文件或目錄來取代符號連接。
-t:執行完隨後的指令,即退出shell。
-u:當執行時使用到未定義過的變數,則顯示錯誤信息。
-v:顯示shell所讀取的輸入值。
-x:執行指令後,會先顯示該指令及所下的參數。
2. 怎樣編寫Linux shell script
Shell通常比喻是人與計算機硬體的「翻譯官」,Shell作為用戶與Linux系統通訊的媒介,自身也定義了各種變數與參數,並提供了諸如循環、分支等高級語言才有的控制結構特性。如何正確的使用這些功能,准確下達命令就顯得尤為重要。
Shell的工作形式分為兩種
1.互動式(Interactive):用戶輸入一條命令,Shell解釋並執行一條。
2.批處理(Batch):用戶事先編寫一個Shell腳本(Script),其中包含諸多命令,Shell會一次執行完所有命令。
編譯簡單的腳本
Shell腳本的編寫要使用到Vim文本編輯器,按照命令的執行順序依次編寫,每行寫一條Linux命令。並且一個完整的Shell腳本則應該包括「腳本聲明」、「注釋信息」和「可執行語句」。
編寫腳步的規范:
腳本聲明(#!):告知系統用何種shell來解釋。
注釋信息(#):對可執行語句或程序功能做介紹,可以不寫。
可執行語句:執行的具體命令。
編寫一個簡單的Shell腳本吧,功能是顯示當前的工作路徑並列出當前目錄下的所有文件與屬性。
[root@linuxprobe~]#vimExample.sh
#!/bin/bash
#ForExampleBYlinuxprobe.com
pwd
ls-al
執行腳本有三種方法:
腳本文件路徑:./Example.sh
sh腳本文件路徑:sh Example.sh
source腳本文件路徑:source Example.sh
學習shell腳步入門,推薦你到《linux就該這么學》這本書上看看,講解的很詳細,同時還能學到更得linux教程。
3. 在linux系統使用過程中,使用shell有哪些好處
比如說對一台伺服器執行反復操作可以選擇shell 腳本自動執行,比如說簡單點的,執行清除一些目錄下的過期文件,可以和crontab計劃任務配合是用,指定時間,每到這個時間自動執行。
如果對多台伺服器,而且是很多,比如說需要對每台伺服器做同樣的操作,安裝服務啊,添加用戶啊,可以和cssh配合使用,遠程批量執行shell,相當方便!
多使用shell也是對個人技能的一個提升!
4. linux中()中的命令不是在子shell中執行,但是為什麼可以使用父shell中的變數
誰告訴你()中的命令 是子shell的,打他
單小括弧 ()
在bash中的作用
①命令組。括弧中的命令將會新開一個子shell順序執行,所以括弧中的變數不能夠被腳本餘下的部分使用。括弧中多個命令之間用分號隔開,最後一個命令可以沒有分號,各命令和括弧之間不必有空格。
②命令替換。等同於`cmd`,shell掃描一遍命令行,發現了$(cmd)結構,便將$(cmd)中的cmd執行一次,得到其標准輸出,再將此輸出放到原來命令。有些shell不支持,如tcsh。
③用於初始化數組。如:array=(a b c d)
5. linux中shell分多少種,都有什麼區別
Shell是一種腳本語言,那麼,就必須有解釋器來執行這些腳本,常見的腳本解釋器有:
bash:是Linux標准默認的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的縮寫,內部命令一共有40個。
sh: 由Steve Bourne開發,是Bourne Shell的縮寫,sh 是Unix 標准默認的shell。
另外還有:ash、 csh、 ksh等。
(5)linuxshell順序執行擴展閱讀:
常見的編程語言分為兩類:一個是編譯型語言,如:c/c++/java等,它們遠行前全部一起要經過編譯器的編譯。另一個解釋型語言,執行時,需要使用解釋器一行一行地轉換為代碼,如:awk, perl, python與shell等。
Shell 經過了POSIX的標准化,所以它是可以在不同的linux系統上進行移植。
關於注釋的問題: 在shell中使用#進行注釋,注意,sh裡面沒有多行注釋,只能每一行加一個#號;
6. 請教Linux shell下如何同時執行多個腳本
Linux下可以有兩種方式執行Shell腳本:
1、用shell程序執行腳本:根據shell腳本的類型,選擇shell程序,常用的有sh,bash,tcsh等(一般來說第一行#!/bin/bash裡面指明了shell類型的,比如#!/bin/bash指明是bash,#!/bin/sh則是sh);然後輸入命令(其中bash為shell的名稱,myshell.sh則為要執行的代碼):
bash myshell.sh
2、直接執行腳本:
不過首先的加上可執行許可權(也許要root許可權,4情況而定),執行:
7. Linux Shell問題
這段代碼很簡單 問題應該是set -r 據我所知set沒有-r
set(選項)(參數)
選項
-a:標示已修改的變數,以供輸出至環境變數。
-b:使被中止的後台程序立刻回報執行狀態。
-C:轉向所產生的文件無法覆蓋已存在的文件。
-d:Shell預設會用雜湊表記憶使用過的指令,以加速指令的執行。使用-d參數可取消。
-e:若指令傳回值不等於0,則立即退出shell。
-f:取消使用通配符。
-h:自動記錄函數的所在位置。
-H Shell:可利用"!"加<指令編號>的方式來執行history中記錄的指令。
-k:指令所給的參數都會被視為此指令的環境變數。
-l:記錄for循環的變數名稱。
-m:使用監視模式。
-n:只讀取指令,而不實際執行。
-p:啟動優先順序模式。
-P:啟動-P參數後,執行指令時,會以實際的文件或目錄來取代符號連接。
-t:執行完隨後的指令,即退出shell。
-u:當執行時使用到未定義過的變數,則顯示錯誤信息。
-v:顯示shell所讀取的輸入值。
-x:執行指令後,會先顯示該指令及所下的參數。
或者你想用的是sed這個命令?
sed[-nefri] 『command』 輸入文本
常用選項:
-n∶使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN的資料一般都會被列出到螢幕上。但如果加上 -n 參數後,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來。
-e∶直接在指令列模式上進行 sed 的動作編輯;
-f∶直接將 sed 的動作寫在一個檔案內, -ffilename 則可以執行 filename 內的sed 動作;
-r∶sed 的動作支援的是延伸型正規表示法的語法。(預設是基礎正規表示法語法)
-i∶直接修改讀取的檔案內容,而不是由螢幕輸出。
常用命令:
a∶新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
c∶取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!
d∶刪除,因為是刪除啊,所以 d 後面通常不接任何咚咚;
i∶插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
p∶列印,亦即將某個選擇的資料印出。通常 p 會與參數 sed -n 一起運作~
s∶取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 就是啦!
改好了試試
8. linux定時執行任務的shell腳本
linux下使用crontab命令被用來提交和管理用戶的需要周期性執行的任務,示例如下:
crontab -e 編輯周期任務
30 21 * * * /etc/init.d/smb restart 每晚的21:30重啟smb
crontab命令說明:
crontab命令被用來提交和管理用戶的需要周期性執行的任務,與windows下的計劃任務類似,當安裝完成操作系統後,默認會安裝此服務工具,並且會自動啟動crond進程,crond進程每分鍾會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。
語法
crontab(選項)(參數)
選項
-e:編輯該用戶的計時器設置;
-l:列出該用戶的計時器設置;
-r:刪除該用戶的計時器設置;
-u<用戶名稱>:指定要設定計時器的用戶名稱。
參數
crontab文件:指定包含待執行任務的crontab文件。
知識擴展
Linux下的任務調度分為兩類:系統任務調度和用戶任務調度。
系統任務調度:系統周期性所要執行的工作,比如寫緩存數據到硬碟、日誌清理等。在/etc目錄下有一個crontab文件,這個就是系統任務調度的配置文件。
crontab文件的含義:
用戶所建立的crontab文件中,每一行都代表一項任務,每行的每個欄位代表一項設置,它的格式共分為六個欄位,前五段是時間設定段,第六段是要執行的命令段,格式如下:
minute hour day month week command 順序:分 時 日 月 周
其中:
minute: 表示分鍾,可以是從0到59之間的任何整數。
hour:表示小時,可以是從0到23之間的任何整數。
day:表示日期,可以是從1到31之間的任何整數。
month:表示月份,可以是從1到12之間的任何整數。
week:表示星期幾,可以是從0到7之間的任何整數,這里的0或7代表星期日。
command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件。
在以上各個欄位中,還可以使用以下特殊字元:
星號(*):代表所有可能的值,例如month欄位如果是星號,則表示在滿足其它欄位的制約條件後每月都執行該命令操作。
逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,「1,2,5,7,8,9」
中杠(-):可以用整數之間的中杠表示一個整數范圍,例如「2-6」表示「2,3,4,5,6」
正斜線(/):可以用正斜線指定時間的間隔頻率,例如「0-23/2」表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute欄位,表示每十分鍾執行一次。
9. 怎樣將多條linux命令寫成shell腳本順序執行
kill -9 `ps -ef |grep weblogic |awk '{print $2}'` //強制殺掉該進程
cd /home/bea/user_project/domain/oms_domain/ //進入weblogic域絕對路徑
mv tbp_config `date +%F`tbp_config //將老的工程項目修改為yyyy-mm-ddtbp_config
cd apps //進入apps目錄
mv TBPWeb `date +%F`TBPWeb //將老的工程項目修改為yyyy-mm-ddTBPWeb
unzip Webconnect.zip //解壓新項目壓縮包
mv Webconnect/ TBPWeb/ //將新項目名稱修改為TBPWeb
cd .. //回到上級目錄
unzip tbp_config.zip //解壓新項目壓縮包
nohup ./startWeblogic.sh && //後台啟動weblogic
tail -f nohup.out //查看啟動信息
10. Linux中當一個用戶登陸後,系統將按順序執行哪些腳本對shell環境進行配置
你問了兩次??這是我剛在另一個地方答的。
分系統設置與個人設置兩方面,
系統設置有/etc/sysconfig/i18n設置語言編碼,/etc/prifile一般用來設置系統變數,/etc/bashrc一般用一設置提示符信息,/etc/profile.d,這是一個目錄,用來設置shell的顏色,語系以及一些命令的附加設置。/etc/man.config用來設man命令的路徑
個人設置有~/.bash_profile,~/.bash_login,~/.profile這個三功能類似,用來設置個性化路徑及用戶的環境變數等等,一般只有~/.bash_profile,bash shell啟動時會去讀~/.bash_profile,找不到時讀~/.bash_login然後~/.profile
~/.bashrc 這個一般也是用來設置個性化路徑及用戶的環境變數等,與~/.bash_profile區別是這個在每次執行shell腳本時都會重新讀取,而~/.bash_profile只在登陸時讀取一次。
~/.bash_history 這個是歷史命令的記錄文件。
~/.bash_logout 這個是注銷bash時的操作。