linux下所有程序必須加上執行祥汪許可權才能執行,而不是像windows一樣根據擴展名茄宴團確定能否執行
chmod +x .sh文件
加上 x權顫橘限方能執行
❷ shell中怎麼批量執行命令。
將要執行的命令全部寫入一個文件(俗稱腳本文件),然後執行腳本文件即可。
注意:假設腳本文件名為test.sh(後綴不必要,只是為了清楚表明是腳本文件),那麼在執行腳本文件前,要用 chmod +x test.sh 賦予其可執行許可權。然後才能像執行命令那樣執行腳本。
--------------------
多台伺服器跟一台伺服器的操作類似,通信協議和操作方式都是相同的,只是IP地址不同。
所以只要寫一個循環,
for ip in $ip1 $ip2 $ip3
do
使用 $ip 做伺服器操作
done
❸ setenv.sh怎麼執行
setenv.sh的執行方式上通過shell執行。shell命拿者令可以事先寫入一個文件中,使用時shell讀取文件中的命令逐條解釋執行,這種文件,被稱為腳本。
執行腳本的方法與執行其他程序一樣,如: ./setenv.sh #setenv.sh是當前知敏兆目錄下的一個腳本
以這種方法執行腳本時,其中的命令是在一個子shell中執行的。子shell繼承了父shell的環境變數,但無法修改他們,或者說所做的修改僅對子shell有效。
如果要使用腳本來修改環境變數,則必須讓腳本在當前shell中執行,這一點可以用以下命令實現:
source setenv.sh #讀入setenv.sh文件中的搭租命令,在當前shell中執行
❹ 如何在shell腳本中執行cd命令
可以使用eval命令。eval命令,如同熟悉的其他腳本語言,會將它的參數做為命令執行。eval命令將會首先掃描命令行進行所有的替換,然後再執行命令。該命令使用於那些一次掃描轎陸無法實裂帆敗現其功能的變數。該命令對變數進行兩次掃描。這些需要進行兩次掃描的變數有時候被稱為復雜變數。命令格式:eval [參數]
補充說明:eval可讀取一連串的參數,然後再依參數本身的特性來執行。肆顫參數不限數目,彼此之間用分號分開。
❺ linux執行sh腳本的指令有哪些
bash shell 腳本的方法有多種,現在作個小結。假設我們編寫好的shell腳本的文件名為hello.sh,文件位置在/data/shell目錄中並已有執行許可權。
方法一:切換到shell腳本所在的目錄(此時,稱為工作目錄)執行shell腳本:
復制代碼代碼如下:
cd /data/shell
./hello.sh
./的意思是說在當前的工作目錄下執行hello.sh。如果不加上./,bash可能會響應找到不到hello.sh的錯誤信息。因為目前的工作目錄(/data/shell)可能不在執行程序默認的搜索路徑之列,也就是說,不在環境變數PASH的內容之中。查看PATH的內容可用 echo $PASH 命令。現在的/data/shell就不在環境變數PASH中的,所以必須加上./才可執行。
方法二:以絕對路徑的方式去執行bash shell腳本:
復制代碼代碼如下:
/data/shell/hello.sh
方法三:直接使用bash 或sh 來執行bash shell腳本:
復制代碼代碼如下:
cd /data/shell
bash hello.sh
或
復制代碼代碼如下:
cd /data/shell
sh hello.sh
注意,若是以方法三的方式來執行,那麼,可以不必事先設定shell的執行許可權,甚至都不用寫shell文件中的第一行(指定bash路徑)。因為方法三是將hello.sh作為參數傳給sh(bash)命令來執行的。這時不是hello.sh自己來執行,而是被人家調用執行,所以不要執行許可權。那麼不用指定bash路徑自然也好理解了啊,呵呵……。
方法四:在當前的shell環境中執行bash shell腳本:
復制代碼代碼如下:
cd /data/shell
. hello.sh
或
復制代碼代碼如下:
cd /data/shell
source hello.sh
前三種方法執行shell腳本時都是在當前shell(稱為父shell)開啟一個子shell環境,此shell腳本就在這個子shell環境中執行。shell腳本執行完後子shell環境隨即關閉,然後又回到父shell中。而方法四則是在當前shell中執行的。
❻ linux 命令中的sh是什麼意思
1、sh是linux中運行shell的命令,是shell的解釋器,shell腳本是linux中殼層與命令行界面,用戶可以在shell腳本輸入命令來執行各種各樣的任務。
要運行shell腳本,首選需要給shell腳本許可權,這里里以hello.sh文件為例,首先需要按下「crtl+shift+T」打開終端窗口:
❼ linux中.sh腳本文件中命令的執行順序
每條命令後如果不加&的話就是依次一行一行的順序執行,只有前面一行執行完成後再執行下一行,如果希望多個命令在一個shell內執行可在一行寫入多條命令,用&&符號間隔
❽ shell腳本中的 exec 命令
exec執行命令時,不會啟用新的shell進程。
source和 .也不會啟用新的shell進程,在當前shell中執行,設定的局部變數在執行完命令後仍然有效。
bash或sh執行時,會另起一個子shell進程,其繼承父shell進程的環境變數,其子shell進程的變數執行完後不影響父shell進程。
exec是用被執行的命令行替換掉當前的shell進程,且exec命令後的其他命令將不再執行。
例如在當前shell中執行 exec ls 表示執行ls這條命令來替換當前的shell ,即為執行完後會退出當前shell。
為了避免父shell被退出,一般將exec命令放到一個子shell腳本中,在父sehll中調用這個子shell腳本,調用處可以用bash xx.sh(xx.sh為存放exec命令的腳本),這樣會為xx.sh建立一個子shell去執行,當執行exec後該子shell進程就被替換成相應的exec的命令。
其中有一個例外:當exec命令對文件描述符操作的時候,就不會替換shell,而是操作完成後還會繼續執行後面的命令!
文件描述符
shell中描述符一共有12個
0 代表標准輸入
1 代表標准輸出
2 錯誤輸出
其他 3-9 都是空白描述符
其含義是: 復制標准輸出到3 ,錯誤輸出到 4 ,把 3 4 保存在bash.log 這個文件中。
其含義是:將bash.sh腳本執行的標准輸出和錯誤輸出追加重定向到 bash.log
如果exec 跟的是其他命令,則其他命令結束後,本shell也隨之停止
可以看到隨著 echo " hello oracle" 這條指令運行完本 整個腳本執行完畢,後面的 echo " hello db2" 沒有執行!
二、Linux shell 腳本中, $@ 和 $@ 分別是什麼意思?
$@ 表示所有腳本參數的內容
$# 表示返回所有腳本參數的個數
示例:編寫如下shell腳本,保存為test.sh
說明:給腳本提供了兩個參數,所以 @代表了參數的內容!
怎麼理解shell腳本中 exec "`dirname "$0"`/node""$0" "$@" ?
$0 #腳本自己的路徑
"`dirname "$0"`"/node #腳本目錄下的node程序的路徑
$@ #腳本被執行時的命令行參數
合起來就是:用腳本目錄下的node程序來解釋這個腳本本身
exec scala "$0" "$@" 是什麼意思
這是bash語法。
$0 #表示當前腳本的名字
$@ #表示當前腳本執行的所有參數
exec scala "$0" "$@" #表示用scala命令,帶參數,執行當前腳本
$0 是位置參數,表示腳本名稱
$1 表示腳本的第一個參數,依次類推直到 $9
exec用於執行命令、或腳本、或外部可執行程序,會新建一個shell去執行
綜上,這里exec sh "$0" 就是執行腳本本身
所以,就是一個循環過程,每隔兩秒列印一次 Hello
❾ Linux中的sh命令的詳細解釋
linxu下的sh命令相當於是shell命令語言的解釋器。下面由我為大家整理了linux的sh命令的詳細解釋的相關知識,希望對大家有幫助!
一、Linux中的sh命令的詳細解釋
sh命令是shell命令語言解釋器,執行命令從標准輸入讀取或從一個文件中讀取。通過用戶輸入命令,和內核進行溝通!Bourne Again Shell (即bash)是自由軟體基金會(GNU)開發的一個Shell,它是Linux系統中一個默認的Shell。Bash不但與Bourne Shell兼容,還繼承了C Shell、Korn Shell等優點。
語法
bash [options] [file]
選項
-c string:命令從-c後的字元串讀取。
-i:實現腳本交互。
-n:進行shell腳本的語法檢查。
-x:實現shell腳本逐條語句的跟蹤。
二、Linux中的sh命令的具體例子
使用-x選項跟蹤腳本調試shell腳本,能列印出所執行的每一行命令以及當前狀態:
[root@AY1307311912260196fcZ satools]# sh -x check_ssh_login.sh
+ DEFINE=30
+ cat /var/log/secure
+ awk '/Failed/ {++ip[$(NF-3)]} END {for (i in ip) print i"="ip[i]}'
++ cat /root/satools/black.txt
+ for i in '`cat /root/satools/black.txt`'
++ echo 121.42.0.16=1427
++ awk -F= '{print $1}' + IP=121.42.0.16
++ echo 121.42.0.16=1427
++ awk -F= '{print $2}'
+ NUM=1427
+ '[' 1427 -gt 30 ']'
+ grep 121.42.0.16 /etc/hosts.deny
+ '[' 1 -gt 0 ']'
+ echo sshd:121.42.0.16
+ echo vsftpd:121.42.0.16
+ for i in '`cat /root/satools/black.txt`'
++ echo 121.42.0.72=276
++ awk -F= '{print $1}'
+ IP=121.42.0.72
++ awk -F= '{print $2}'
++ echo 121.42.0.72=276
+ NUM=276 + '[' 276 -gt 30 ']'
+ grep 121.42.0.72 /etc/hosts.deny
+ '[' 1 -gt 0 ']'
+ echo sshd:121.42.0.72
+ echo vsftpd:121.42.0.72
三、Linux中對.sh文件的操作命令
1、創建test.sh文件
touch test.sh
2、編輯sh文件
vi test.sh
3、保存退出
敲擊esc, 然後輸入 :wq ,回車退出
4、添加可執行許可權,當然默認就是可執行的。
chmod +x test.sh
5、運行文件
(1)./test.sh
(2)sh test.sh
6、刪除文件
rm test.sh