linux shell程式設計(一)

2021-10-19 09:37:43 字數 2489 閱讀 4664

# 如果直接使用檔案路徑,如果沒有x許可權會提示許可權不夠 

./test.sh

# 使用bash或者sh直譯器不需要獲取執行許可權

bash test.sh

sh test.sh

上面幾種方式都是通過開啟子程序的方式來啟動的bash:

# 通過pstree命令可以檢視到程序樹

# 都是在bash終端下開啟了乙個子程序(bash or ./test.sh)

sshd——sshd——bash——test.sh——sleep # ./test.sh

sshd——sshd——bash——test.sh——sleep # bash test.sh

# 直接使用bash

source test.sh

. test.sh

# 使用pstree檢視程序樹,直接在bash下面執行了,沒有開啟子程序

sshd——sshd——bash——sleep

上面的程序樹,sshd下面的bash就是我們在xshell或者mobaxterm中開啟的shell程序,如果使用source直接在當前bash下執行,按下ctrl+c,就會退出整個終端

# 將使用者輸入的值繫結的key1變數中

# 預設不支援\字元,需要使用-r選項支援\字元

read key1

# -p增加提示

# -s 輸入的內容敲回車後不顯示在終端上

read -s -p "請輸入使用者名稱" key2

# 設定輸入超時時間

echo

$key1

"123"

檔案描述符:

ls命令為例:

# 將標準輸出重定向到info.log中

ls test.sh > info.log

# 如果test.sh不存在,上述命令還會在終端上列印錯誤資訊

# 將標準錯誤輸出重定向到error.log中: 2>

ls test.sh 2> error.log

# 同時將標準輸出和標準錯誤輸出重定向到不同的檔案中

ls test.sh > info.log 2> error.log

# 同時將標準輸出和標準錯誤輸出重定向到相同檔案中

ls test.sh &

> runtime.log

# 標準輸出重定向到錯誤輸出

ls test.sh 1>

&2# 標準錯誤輸出重定向到標準輸出

ls test.sh 2>

&1

雖然標準輸出和標準錯誤輸出互相轉換在終端中看不出本質區別,但是顯示的通道是不一致的

例子:將標準輸出重定向到檔案,將錯誤輸出重定向到標準輸出從而實現info和error都匯入到同一檔案中

ls test.sh > info.log 2>

&1

linux黑洞

在linux中,有乙個特殊的裝置/dev/null,無論寫入什麼都會被系統吞噬。

如果有一些錯誤資訊

單引號

可以遮蔽特殊符號(雙引號不可以)

num=1

echo

$num

# 1echo

"$num"

# 1echo

'$num'

# $num

反引號

反引號的作用是進行命令替換,輸出命令的執行結果

# 將/var/log下的日誌檔案打包

tar -zcf /root/log-`

date

` /var/log

命名規則

不能包含特殊符號,僅僅支援大小寫字元 + 下劃線(_)

不能以數字開頭

# 定義變數,注意等號兩邊不能有空格

a=1

# 輸出

echo

$a# 取消變數定義

linux shell程式設計一

一 shell 是linux核心與使用者應用的溝通介面,相當於下面的ui部分 二 shell有很多種,常用的是bash sh,csh,ksh,bash,三 shell指令碼就是shell命令的集合 四 變數賦值中不能有空格,如 bin bash 1 2 3 100 sum 0 for i 1 i 1...

Linux Shell程式設計一

互動模式 當shell收到使用者輸入命令後,就開始執行這項命令,並把結果顯示到螢幕上,結束後shell又會顯示系統提示符,等待使用者輸入下一條命令。後台執行 後台執行的符號為 在命令後面加上 符號,就可以將程式放到後台執行。例如 top 在後台執行的程式怎麼使它恢復到前台來執行呢?執行fg命令,注意...

Linux Shell程式設計 一

bin bash echo hello world 定義自己的環境變數 tomecat home opt tomcat 輸出變數 export tomcat home echo 程序號 後台方式執行positionpara.sh positionpara.sh echo 最後乙個程序號 echo 執...