初涉linux(三)之shell程式設計

2021-08-29 21:19:57 字數 2017 閱讀 5364

[color=red]如果系統學習,使用《高階bash指令碼程式設計指南》這本書[/color]

shell初級程式設計 by hayabusa

3.1講義

3.1.1 shell

set //所有變數

unset //取消變數設定

export 變數 //匯出變數,使其全域性可用

env //環境變數

shell基本格式:

#!/bin/bash

//edit...

chmod u+x script

$(command)或者`command` //命令巢狀的寫法

3.1.2

3.1.2.1

stdin 標準輸入

stdout 標準輸出

stderr 標準錯誤輸出

3.1.2.2重定向:

> 輸出重定向

2> 錯誤重定向

&> 全部重定向

tr 'a-z' 'a-z' < var3.sh

3.1.2.3

管道:前者輸出作為後者輸入

ls -l /etc | less

3.1.2.4

多目標重定向

command |tee t2.txt

3.1.3正規表示式

^ $ *

3.1.4 shell 帶引數

$1 $2 $* $#

3.1.5 條件判斷

= -eq

!= -ne

-gt-lt

-ge-le

3.1.6控制流程 -a -o !

while 條件

do命令

done

if 條件

then 命令(可以巢狀if)

elif 條件

then 命令

else

命令(可以巢狀if)

fi@#!!//數值運算加兩對圓括號

case

case 值 in

模式)命令

;;模式)

命令;;

...esac

for 變數 in 'seq 1 100'

do command

done

//break continue 類似於c:exit直接退出,可帶返回值

until 條件

do//command

done

3.2 擴充套件

3.2.1

讀老師的程式偷師到的幾個命令 :wink:

basename /path/filename //printf the real name of a file

cut -d: -f2 // 這個命令用好了非常的強大 :wink:

3.2.2 userlist.sh

# list all the users

#!/bin/bash

n=0;

for i in `cut -d: -f3 /etc/passwd`

do ((n=n+1))

m=`echo "$n " |tr ' ' 'p'`

if [ $i -le 60000 -a $i -ge 500 ]

then cut -d: -f1 /etc/passwd|sed -n $m

elif [ $i = 0 ]

then cut -d: -f1 /etc/passwd|sed -n $m

fidone

3.3 問題

3.3.1

caseselect 檔案中的此句(鄙視自己,看了解釋還不懂 :cry: )

echo "`basename $0`:this is not between 1 and 5" >&2

[color=red] 已解決:

這句話的意思就是將stdout重定向到stderr之中,但是由於stdout與stderr的預設輸出都是monitor,所以看不到效果,下邊的**好些:

echo "`basename $0`:this is not between 1 and 5" 2>ver >&2[/color]

Linux初涉shell指令碼

1 檔案的第一行應為 bin bash 預設執行環境為 bin bash2 chmod x file.sh 使檔案可執行 3 指令碼除錯sh x file.sh1 引用與轉義 強引用 單引號 將字串放置在單引號中,保留字串中所有字元的文字值,同時禁用所有擴充套件.弱引用 雙引號 將字串放置在雙引號中...

初涉彙編《三》

在彙編 二 中我的說的問題,在這就不做回答了,因為乙個暫存器的來儲存資料肯定不夠用,因此,這些暫存器就可以提供空間。好了,這個彙編學習畢竟是我對彙編的個人的學習問題。現在我來說說彙編中後面的幾個標誌暫存器。標誌暫存器總共有9個,分別是cf,pf,af,zf,sf,tf,if,df,of 詳細解答,看...

linux學習1 初涉linux

linux因其穩定高效的特點,受到很多開發者的青睞,因此將其作為伺服器的作業系統。作為一名開發者,程式設計師,掌握了一定的linux知識和技巧,程式的開發部署和執行也有不小的幫助。linux由於其開源的特性,存在很多的版本,大同小異,大多數企業使用rhel。學習linux,首先要有乙個linux環境...