1. 程式人生 > >Shell指令碼編寫常用——————持續更新

Shell指令碼編寫常用——————持續更新

Linux指令碼

source命令與點命令

單純執行shell指令碼./a.sh,  並不能把指令碼中定義的變數匯入到父shell中, 必須用source的方式執行才可以

$0 $? $#...

https://zhidao.baidu.com/question/1688965149272609028.html


$0 Shell本身的檔名
$1~$n 新增到Shell的各引數值。$1是第1引數、$2是第2引數…
$$ Shell本身的PID(ProcessID)
$! Shell最後執行的後臺Process的PID
$? 最後執行的命令的結束程式碼(返回值)
$- 使用Set命令設定的Flag一覽
$* 所有引數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有數。
[email protected]
所有引數列表。如"[email protected]"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有引數。
$# 新增到Shell的引數個數

$() 與 ``

eval命令

http://www.cnblogs.com/qingjiaowoxiaoxioashou/p/6601788.html

Linux邏輯運算子

http://www.cnblogs.com/chengmo/archive/2010/10/01/1839942.html

command >/dev/null 與 command >/dev/null 2>&1

command >/dev/null的作用是將是command命令的標準輸出丟棄,而標準錯誤輸出還是在螢幕上。 

一般來講標準輸出和標準錯誤輸出都是螢幕,因此錯誤資訊還是會在螢幕上輸出。這時可以用command >/dev/null 2>&1 這樣標準輸出與標準錯誤輸出都會被丟棄。1表示標準輸出,2表示標準錯誤輸出,2>&1表示將標準錯誤輸出重定向到標準輸出。 檔案描述符我們常見的就是系統預留的0,1和2這三個,他們的意義分別有如下對應關係:
0 —— stdin(標準輸入)
1 —— stdout (標準輸出)
2 —— stderr (標準錯誤)
“2> /dev/null” 代表忽略掉錯誤提示資訊

dirname命令

cd - 與 dirs 與 pushd 與 popd


shell指令碼示例

#!/bin/bash
FILE_PATH="/opt/filepath"					#變數

echo "The following file or dir exists:"

if [ -f "${FILE_PATH}/a/b.jar" ]; then echo "${FILE_PATH}/a/b.jar" ; fi	#IF語句

echo "Done"

#!/bin/bash
logss="/var/log/a.log /var/log/b.log"	#字串陣列
i=1										#整型變數
while true								#while迴圈
do 
   logstr='xxxxxxxxxxxxxxxxxxx'
   for logfile in $logss; do			#for迴圈,變數字串陣列
        echo $logfile					
        ls -la $logfile
        echo $logstr >> $logfile
        du -sh $logfile					#檢視檔案大小
    done
   ((i=$i+1))							#整型變數運算
   echo $i
   sleep 1								#sleep
done


Windows指令碼示例

@echo off
SET FILE_PATH=D:\filepath					#變數

echo The following file or dir exists:

if exist %FILE_PATH%\a\b.properties ( echo %FILE_PATH%\a\b.properties)	#IF語句

echo Done

@echo off

:loops

echo 暫停3秒鐘
start /min /w mshta vbscript:setTimeout("window.close()",3000)	#Windows暫停

goto loops					#GOTO語句

pause 1>nul