shell 程式設計記錄。

2021-07-05 03:28:58 字數 2656 閱讀 2756

記錄一些shell程式設計的問題。

有個教程很好------

1.獲取返回資訊。

如果是返回結果:

cmdif [ "$?" == "" ]

then

echo "乙個字元"

else

echo "另乙個字元"

fi如果是輸出:

result=`cmd`

if [ "$result" == "" ]

then

echo "乙個字元"

else

echo "另乙個字元"fi

2.特殊變數說明。

變數說明: $$

shell本身的pid(processid)

$!shell最後執行的後台process的pid

$?最後執行的命令的結束**(返回值)

$-使用set命令設定的flag一覽

$*所有引數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有引數。

$@所有引數列表。如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有引數。

$#新增到shell的引數個數

$0shell本身的檔名

$1~$n

新增到shell的各引數值。$1是第1引數、$2是第2引數…。

我們先寫乙個簡單的指令碼,執行以後再解釋各個變數的意義

# touch variable

# vi variable

指令碼內容如下:

#!/bin/sh

echo "number:$#"

echo "scname:$0"

echo "first :$1"

echo "second:$2"

echo "argume:$@"

儲存退出

賦予指令碼執行許可權

# chmod +x variable

執行指令碼

# ./variable aa bb

number:2

scname:./variable

first: aa

second:bb

argume:aa bb

通過顯示結果可以看到:

$# 是傳給指令碼的引數個數

$0 是指令碼本身的名字

$1是傳遞給該shell指令碼的第乙個引數

$2是傳遞給該shell指令碼的第二個引數

$@ 是傳給指令碼的所有引數的列表

3.檔案包含

像其他語言一樣,shell 也可以包含外部指令碼,將外部指令碼的內容合併到當前指令碼。

shell 中包含指令碼可以使用:

. filename

source filename

兩種方式的效果相同,簡單起見,一般使用點號(.),但是注意點號(.)和檔名中間有一空格。

例如,建立兩個指令碼,乙個是被呼叫指令碼 subscript.sh,內容如下:

url

=""

乙個是主檔案 main.sh,內容如下:

複製

純文字新視窗

#!/bin/bash..

/subscript

.shecho $url

執行指令碼:

$chomd +x main.sh

./main.sh

$

注意:被包含指令碼不需要有執行許可權。

4.字串

字串是shell程式設計中最常用最有用的資料型別(除了數字和字串,也沒啥其它型別好用了),字串可以用單引號,也可以用雙引號,也可以不用引號。單雙引號的區別跟php類似。

str

='this is a string'

單引號字串的限制:

your_name

='qinjx'

str=

"hello, i know your are

\"$your_name

\"! \n"

雙引號的優點:

your_name

="qinjx"

greeting

="hello, "

$your_name

" !"

greeting_1

="hello, $ !"

echo $greeting

$greeting_1

string

="abcd"

echo $

#輸出 4

string

="alibaba is a great company"

echo $

#輸出liba

string

="alibaba is a great company"

echo `expr index "$string" is`

shell程式設計記錄01

本篇文章將展現乙個最簡單的makefile檔案的編寫。乙個工程中的原始檔不計其數,其按型別 功能 模組分別放在若干個目錄中,makefile定義了一系列的規則來指定哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更複雜的功能操作,因為 makefile就像乙個shell指令碼...

shell使用記錄

檢查 設定系統的服務 chkconfig top。inux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源占用狀況,類似於windows的任務管理器。詳解使用shell命令控制任務 jobs 執行 jobs 列出屬於當前使用者的程序 bg n 將程序搬到後台執行 background fg n...

shell 學習記錄

1 以兩個破折號 來表示選項結尾的用法,源自system v。自此之後命令列上看起來像選項的任何專案,都將 一視同仁的當成引數處置。上面這個句話是什麼鬼意思?2 shell是別的三種命令 1 內建命令 比如cd echo test 2 shell函式 3 外部命令 shell變數 1 變數名字 字元...