Ubuntu學習 輸入和輸出及流程控制 5

2021-07-17 03:49:19 字數 4717 閱讀 3720

輸入指的是shell程式讀入輸出。

輸出指的是shell程式執行結果的處理。

輸出通常使用echo命令

eg:

echo

$str

echo

$str >file

echo

$str >>file

第二行》為覆蓋,第三行》為追加。

echo輸出內容使用格式控制字元

\c:輸出完畢不換行

\t:輸出後跳格相當於tab

\n:輸出後換行

read 命令讀取資訊

如果唯讀入乙個變數,會把所有輸入資訊賦給該變數,』enter』結束輸入。

如果輸入多個變數,用空格隔開,輸入時也用空格隔開。

讀取語句後新增》filename表示從檔案中提取資料,並賦給變數。

eg:

read var1

this cannot be repair.

echo

$var1

read var1 var2 var3

this cannot be repair.

echo

$var1

$var2

$var3

echo

$var1

echo

$var2

echo

$var3

簡單程式例項

eg:

#!/bin/bash

#read.sh

echo please enter your name:

read varl

echo hello $varl

檔案重定向

command 1為標準輸出,2*為標準輸出的錯誤*

command > filename 覆蓋該檔案內容

command >> filename 追加到該檔案內容

command 1 > filename 與沒有1相同

command > filename2>&1把標準輸出和標準錯誤一起重定向到乙個檔案中

command > filename2>>&1把標準輸出和標準錯誤一起追加到乙個檔案中

command 2> filename把標準輸出的錯誤重定向到乙個檔案中

command2 >> filename把標準輸出的錯誤追加到另乙個檔案中

command < filename > filename2輸入資訊來自filename,輸出資訊指向filaname2

command < filename 把command命令以filename作為標準輸入

eg:

ls > ls.out

ll > ls.out

ls ne 2> ls.error

ll ne 2>>ls.error

cat < ls.error

vi q.sh

*.sh

zzll .sh> list.out

read varl .sh

echo .sh

...

引號的使用

雙引號表示引用乙個字串,字串中特殊符號依舊作用。

單引號中特殊符號忽略只顯示特殊符號。

反引號用於執行引號中的系統命令。

反斜線用於轉義。

eg:

var1=1000

echo

"hello linux $var1"

echo

'hello linux $var1'

單引號內部可以套雙引號,雙引號內部使用雙引號需要使用單斜線轉義。同樣單引號內部再次使用單引號也需要使用單斜號進行轉義。

eg:

echo

"hello "linux""

echo

"hello \"linux\""

echo

'hello "linux"'

echo

'hello \'linux\''

echo

'hello 'linux''

反引號的使用

使用反引號用於執行系統命令

eg:

var1=`expr 1 + 1`

echo

$var1

var2=`expr 1+1`

echo

$var2

需要注意的是算術運算數字和符號之間需要使用空格隔開,否則輸出則為算式而非結果

測試語句

測試,指對變數的大小、字串、檔案屬性等內容進行判斷。

test命令可用於字串、數字、檔案狀態等內容的測試。

返回0表示測試成功,返回1表示測試失敗。

-d 測試檔案是否是目錄檔案

-f 測試檔案是否是正規檔案

-l 測試檔案是否是符號連線

-x 測試檔案是否可執行

-s 測試檔案是否非空

-w 測試是否可寫

-u 測試檔案是否有suid位設定

-r 測試檔案是否可讀

數值測試

指的是比較兩個數值的大小或相等關係

1。test 第乙個運算元 第二個運算元

2。[第乙個運算元 數值比較符 第二個運算元]

數值比較符

-eq 兩數是否相等

-ne 兩數是否不相等

-le 第乙個數是否不大於第二個數

-ge 第乙個數是否不小於第二個數

-gt 第乙個數是否大於第二個數

-lt 第乙個數是否小於第二個數

邏輯測試

指的是將多個條件進行邏輯運算

-a 邏輯與

-o 邏輯或

! 邏輯否

字串測試

指的是比較兩個字串是否相等,或者判斷乙個字串是否為空

test 字串比較符 字串

test 字串1 字串比較符 字串2

[字串比較符 字串]

[字串1 字串比較符 字串2]

= 測試是否相等

!= 測試是否不相等

-z 測試是否空字串

-n 測試是否非空字串

流程控制結構

使用邏輯判斷,針對結果執行不同語句

順序結構

分支結構

迴圈結構

if 條件

then 命令1

fiif 條件

then 命令1

else 命令2

fiif 條件1

then 命令1

elif 條件2

then 命令2

else 命令3

fiif 條件1 ;then 命令1

elif 條件2 ;then 命令2

else 命令3

fi

流程控制結構

eg:

#!/bin/bash

#!judge.sh

i=$[ $1 % 2]

if test $i

-eq0;then

echo oushu

else

echo jishu

fi

#!/bin/bash

#test.sh

if test -z $1

then

echo

"please input a filename"

else

if test -w $1

then

echo

"writeable"

else

echo

"unwriteable"

fiif test -x $1

then

echo

"excuteable"

else

echo

"unexcutable"

fifi

for語句使用方法

for 變數名 in 列表

do 命令1

命令2...done

列表是乙個使用空格分割取值的乙個列表,每一次迴圈變數的取值依次從列表中索取。

eg:

#!/bin/bash

#for.sh

for char in a b c d f

doecho

$char

done

until迴圈

until 條件

do 命令1

命令2...done

eg:

#!/bin/bash

#sumup.sh

sum=0

i=1until [ i -gt

100 ]

do sum=$[ $sum + $i ]

i=$[ $i + 1 ]

done

echo

$sum

啊啊啊啊啊。。。累得快死。。。這一段適應真不容易,多敲**慢慢能不出錯就好

檔案輸入和輸出流

在常用的三種流中處理檔案的分別是 iftream,ofstream,fstream ifstream 表示可以讀取的檔案流 ofstream 表示可以寫入的檔案輸出流 fstream 表示可以進行讀寫操作的檔案流 1 如何讀取乙個檔案?在c 中讀取檔案要使用iostream標頭檔案,具體實現 1 必...

C 輸入和輸出流

一 i o流的概念和流類庫的結構 1 i o流的概念和流類庫的結構 1 標準裝置的輸入和輸出。即從鍵盤輸入資料,輸出到顯示器螢幕。標準輸入輸出 2 標準裝置的輸入和輸出。即從鍵盤輸入資料,輸出到顯示器螢幕。標準輸入輸出 3 記憶體中指定的空間進行輸入和輸出,稱為字串輸入輸出,簡稱串i o 2 標準輸...

流和輸入輸出

參考 1 openfiledialogue類 命名空間 system.windows.forms 作用 顯示標準的windows 開啟 對話方塊。current thread must be set to single thread apartment sta mode before ole 原因很...