亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

2 BASH 的基本語(yǔ)法

系統(tǒng) 2294 0

BASH 的基本語(yǔ)法

2????BASH 的基本語(yǔ)法

  • 最簡(jiǎn)單的例子 —— Hello World!

  • 關(guān)于輸入、輸出和錯(cuò)誤輸出

  • BASH 中對(duì)變量的規(guī)定(與 C 語(yǔ)言的異同)

  • BASH 中的基本流程控制語(yǔ)法

  • 函數(shù)的使用

2.1????最簡(jiǎn)單的例子 —— Hello World!

幾乎所有的講解編程的書(shū)給讀者的第一個(gè)例子都是 Hello World 程序,那么我們今天也就從這個(gè)例子出發(fā),來(lái)逐步了解 BASH。

用 vi 編輯器編輯一個(gè) hello 文件 如下:



#!/bin/bash

# This is a very simple example

echo Hello World

這樣最簡(jiǎn)單的一個(gè) BASH 程序就編寫(xiě)完了。這里有幾個(gè)問(wèn)題需要說(shuō)明一下:

一,第一行的 #! 是什么意思

二,第一行的 /bin/bash 又是什么意思

三,第二行是注釋嗎

四,echo 語(yǔ)句

五,如何執(zhí)行該程序

#! 是說(shuō)明 hello 這個(gè)文件的類(lèi)型的,有點(diǎn)類(lèi)似于 Windows 系統(tǒng)下用不同文件后綴來(lái)表示不同文件類(lèi)型的意思(但不相同)。Linux 系統(tǒng)根據(jù)
"#!" 及該字串后面的信息確定該文件的類(lèi)型,關(guān)于這一問(wèn)題同學(xué)們回去以后可以通過(guò) "man magic"命令 及
/usr/share/magic 文件來(lái)了解這方面的更多內(nèi)容。在 BASH 中 第一行的 "#!" 及后面的 "/bin/bash"
就表明該文件是一個(gè) BASH 程序,需要由 /bin 目錄下的 bash 程序來(lái)解釋執(zhí)行。BASH 這個(gè)程序一般是存放在 /bin 目錄下,如果你的 Linux
系統(tǒng)比較特別,bash 也有可能被存放在 /sbin 、/usr/local/bin 、/usr/bin 、/usr/sbin 或 /usr/local/sbin
這樣的目錄下;如果還找不到,你可以用 "locate bash" "find / -name bash 2> /dev/null"
或 "whereis bash" 這三個(gè)命令找出 bash 所在的位置;如果仍然找不到,那你可能需要自己動(dòng)手安裝一個(gè) BASH 軟件包了。

第二行的 "# This is a ..." 就是 BASH 程序的注釋?zhuān)?BASH 程序中從“#”號(hào)(注意:后面緊接著是“!”號(hào)的除外)開(kāi)始到行尾的多有部分均被看作是程序的注釋。的三行的
echo 語(yǔ)句的功能是把 echo 后面的字符串輸出到標(biāo)準(zhǔn)輸出中去。由于 echo 后跟的是 "Hello World" 這個(gè)字符串,因此
"Hello World"這個(gè)字串就被顯示在控制臺(tái)終端的屏幕上了。需要注意的是 BASH 中的絕大多數(shù)語(yǔ)句結(jié)尾處都沒(méi)有分號(hào)。

如何執(zhí)行該程序呢?有兩種方法:一種是顯式制定 BASH 去執(zhí)行:

$ bash hello 或

$ sh hello (這里 sh 是指向 bash 的一個(gè)鏈接,“l(fā)rwxrwxrwx 1 root root 4 Aug 20 05:41 /bin/sh
-> bash”)

或者可以先將 hello 文件改為可以執(zhí)行的文件,然后直接運(yùn)行它,此時(shí)由于 hello 文件第一行的 "#! /bin/bash"
的作用,系統(tǒng)會(huì)自動(dòng)用/bin/bash 程序去解釋執(zhí)行 hello 文件的:

$ chmod u+x hello

$ ./hello

此處沒(méi)有直接 “$ hello”是因?yàn)楫?dāng)前目錄不是當(dāng)前用戶可執(zhí)行文件的默認(rèn)目錄,而將當(dāng)前目錄“.”設(shè)為默認(rèn)目錄是一個(gè)不安全的設(shè)置。

需要注意的是,BASH 程序被執(zhí)行后,實(shí)際上 Linux 系統(tǒng)是另外開(kāi)設(shè)了一個(gè)進(jìn)程來(lái)運(yùn)行的。

?

2.2????關(guān)于輸入、輸出和錯(cuò)誤輸出

在字符終端環(huán)境中,標(biāo)準(zhǔn)輸入/標(biāo)準(zhǔn)輸出的概念很好理解。輸入即指對(duì)一個(gè)應(yīng)用程序或命令的輸入,無(wú)論是從鍵盤(pán)輸入還是從別的文件輸入;輸出即指應(yīng)用程序或命令產(chǎn)生的一些信息;與
Windows 系統(tǒng)下不同的是,Linux 系統(tǒng)下還有一個(gè)標(biāo)準(zhǔn)錯(cuò)誤輸出的概念,這個(gè)概念主要是為程序調(diào)試和系統(tǒng)維護(hù)目的而設(shè)置的,錯(cuò)誤輸出于標(biāo)準(zhǔn)輸出分開(kāi)可以讓一些高級(jí)的錯(cuò)誤信息不干擾正常的輸出信息,從而方便一般用戶的使用。

在 Linux 系統(tǒng)中:標(biāo)準(zhǔn)輸入(stdin)默認(rèn)為鍵盤(pán)輸入;標(biāo)準(zhǔn)輸出(stdout)默認(rèn)為屏幕輸出;標(biāo)準(zhǔn)錯(cuò)誤輸出(stderr)默認(rèn)也是輸出到屏幕(上面的
std 表示 standard)。在 BASH 中使用這些概念時(shí)一般將標(biāo)準(zhǔn)輸出表示為 1,將標(biāo)準(zhǔn)錯(cuò)誤輸出表示為 2。下面我們舉例來(lái)說(shuō)明如何使用他們,特別是標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出。

輸入、輸出及標(biāo)準(zhǔn)錯(cuò)誤輸出主要用于 I/O 的重定向,就是說(shuō)需要改變他們的默認(rèn)設(shè)置。先看這個(gè)例子:

$ ls > ls_result

$ ls -l >> ls_result

上面這兩個(gè)命令分別將 ls 命令的結(jié)果輸出重定向到 ls_result 文件中和追加到 ls_result 文件中,而不是輸出到屏幕上。">"就是輸出(標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出)重定向的代表符號(hào),連續(xù)兩個(gè)
">" 符號(hào),即 ">>" 則表示不清除原來(lái)的而追加輸出。下面再來(lái)看一個(gè)稍微復(fù)雜的例子:

$ find /home -name lost* 2> err_result

這個(gè)命令在 ">" 符號(hào)之前多了一個(gè) "2","2>" 表示將標(biāo)準(zhǔn)錯(cuò)誤輸出重定向。由于
/home 目錄下有些目錄由于權(quán)限限制不能訪問(wèn),因此會(huì)產(chǎn)生一些標(biāo)準(zhǔn)錯(cuò)誤輸出被存放在 err_result 文件中。大家可以設(shè)想一下 find
/home -name lost* 2>>err_result
命令會(huì)產(chǎn)生什么結(jié)果?

如果直接執(zhí)行 find /home -name lost* > all_result
,其結(jié)果是只有標(biāo)準(zhǔn)輸出被存入 all_result 文件中,要想讓標(biāo)準(zhǔn)錯(cuò)誤輸出和標(biāo)準(zhǔn)輸入一樣都被存入到文件中,那該怎么辦呢?看下面這個(gè)例子:

$ find /home -name lost* > all_result 2>&
1

上面這個(gè)例子中將首先將標(biāo)準(zhǔn)錯(cuò)誤輸出也重定向到標(biāo)準(zhǔn)輸出中,再將標(biāo)準(zhǔn)輸出重定向到 all_result 這個(gè)文件中。這樣我們就可以將所有的輸出都存儲(chǔ)到文件中了。為實(shí)現(xiàn)上述功能,還有一種簡(jiǎn)便的寫(xiě)法如下:

$ find /home -name lost* >& all_result

如果那些出錯(cuò)信息并不重要,下面這個(gè)命令可以讓你避開(kāi)眾多無(wú)用出錯(cuò)信息的干擾:

$ find /home -name lost* 2> /dev/null

?

同學(xué)們回去后還可以再試驗(yàn)一下如下幾種重定向方式,看看會(huì)出什么結(jié)果,為什么?

?

$ find /home -name lost* > all_result 1>&
2

$ find /home -name lost* 2> all_result 1>& 2

$ find /home -name lost* 2>& 1 > all_result

另外一個(gè)非常有用的重定向操作符是 "-",請(qǐng)看下面這個(gè)例子:

$ (cd /source/directory && tar cf - . ) | (cd /dest/directory
&& tar xvfp -)

該命令表示把 /source/directory 目錄下的所有文件通過(guò)壓縮和解壓,快速的全部移動(dòng)到 /dest/directory 目錄下去,這個(gè)命令在
/source/directory 和 /dest/directory 不處在同一個(gè)文件系統(tǒng)下時(shí)將顯示出特別的優(yōu)勢(shì)。

下面還幾種不常見(jiàn)的用法:

n<&- 表示將 n 號(hào)輸入關(guān)閉

<&- 表示關(guān)閉標(biāo)準(zhǔn)輸入(鍵盤(pán))

n>&- 表示將 n 號(hào)輸出關(guān)閉

>&- 表示將標(biāo)準(zhǔn)輸出關(guān)閉

?

2.3????BASH 中對(duì)變量的規(guī)定(與 C 語(yǔ)言的異同)

好了下面我們進(jìn)入正題,先看看 BASH 中的變量是如何定義和使用的。對(duì)于熟悉 C 語(yǔ)言的程序員,我們將解釋 BASH 中的定義和用法與 C 語(yǔ)言中有何不同。

2.3.1. BASH 中的變量介紹

我們先來(lái)從整體上把握一下 BASH 中變量的用法,然后再去分析 BASH 中變量使用與 C 語(yǔ)言中的不同。BASH 中的變量都是不能含有保留字,不能含有
"-" 等保留字符,也不能含有空格。

2.3.1.1 簡(jiǎn)單變量

在 BASH 中變量定義是不需要的,沒(méi)有 "int i" 這樣的定義過(guò)程。如果想用一個(gè)變量,只要他沒(méi)有在前面被定義過(guò),就直接可以用,當(dāng)然你使用該變量的第一條語(yǔ)句應(yīng)該是對(duì)他賦初值了,如果你不賦初值也沒(méi)關(guān)系,只不過(guò)該變量是空(
注意:是 NULL,不是 0 )。不給變量賦初值雖然語(yǔ)法上不反對(duì),但不是一個(gè)好的編程習(xí)慣。好了我們看看下面的例子:

首先用 vi 編輯下面這個(gè) 文件 hello2

#!/bin/bash

# give the initialize value to STR

STR="Hello World"

echo $STR



在上面這個(gè)程序中我們需要注意下面幾點(diǎn):

一,變量賦值時(shí),'='左右兩邊都不能有空格;

二,BASH 中的語(yǔ)句結(jié)尾不需要分號(hào)(";");

三,除了在變量賦值和在FOR循環(huán)語(yǔ)句頭中,BASH 中的變量使用必須在變量前加"$"符號(hào),同學(xué)們可以將上面程序中第三行改為 "echo
STR" 再試試,看看會(huì)出什么結(jié)果。

四,由于 BASH 程序是在一個(gè)新的進(jìn)程中運(yùn)行的,所以該程序中的變量定義和賦值不會(huì)改變其他進(jìn)程或原始 Shell 中同名變量的值,也不會(huì)影響他們的運(yùn)行。

更細(xì)致的文檔甚至提到以但引號(hào)括起來(lái)的變量將不被 BASH 解釋為變量,如 '$STR' ,而被看成為純粹的字符串。而且更為標(biāo)準(zhǔn)的變量引用方式是 ${STR}
這樣的,$STR 自不過(guò)是對(duì) ${STR} 的一種簡(jiǎn)化。在復(fù)雜情況下(即有可能產(chǎn)生歧義的地方)最好用帶 {} 的表示方式。

BASH 中的變量既然不需要定義,也就沒(méi)有類(lèi)型一說(shuō),一個(gè)變量即可以被定義為一個(gè)字符串,也可以被再定義為整數(shù)。如果對(duì)該變量進(jìn)行整數(shù)運(yùn)算,他就被解釋為整數(shù);如果對(duì)他進(jìn)行字符串操作,他就被看作為一個(gè)字符串。請(qǐng)看下面的 例子

#!/bin/bash

x=1999

let "x = $x + 1"

echo $x

x="olympic'"$x

echo $x

關(guān)于整數(shù)變量計(jì)算,有如下幾種:" + - * / % ",他們的意思和字面意思相同。整數(shù)運(yùn)算一般通過(guò)
let 和 expr 這兩個(gè)指令來(lái)實(shí)現(xiàn),如對(duì)變量 x 加 1 可以寫(xiě)作: let "x = $x +
1"
或者 x=`expr $x + 1`

在比較操作上,整數(shù)變量和字符串變量各不相同,詳見(jiàn)下表:

對(duì)應(yīng)的操作
整數(shù)操作
字符串操作
相同
-eq
=
不同
-ne
!=
大于
-gt
>
小于
-lt
<
大于或等于
-ge
小于或等于
-le
為空
-z
不為空
-n



比如:

比較字符串 a 和 b 是否相等就寫(xiě)作: if [ $a = $b ]

判斷字符串 a 是否為空就寫(xiě)作: if [ -z $a ]

判斷整數(shù)變量 a 是否大于 b 就寫(xiě)作: if [ $a -gt $b ]

更細(xì)致的文檔推薦在字符串比較時(shí)盡量不要使用 -n ,而用 ! -z 來(lái)代替。(其中符號(hào) "!" 表示求反操作)

BASH 中的變量除了用于對(duì) 整數(shù) 和 字符串 進(jìn)行操作以外,另一個(gè)作用是作為文件變量。BASH 是 Linux 操作系統(tǒng)的 Shell,因此系統(tǒng)的文件必然是
BASH 需要操作的重要對(duì)象,如 if [ -x /root ] 可以用于判斷 /root 目錄是否可以被當(dāng)前用戶進(jìn)入。下表列出了
BASH 中用于判斷文件屬性的操作符:

運(yùn)算符
含義( 滿足下面要求時(shí)返回 TRUE )
-e file
文件 file 已經(jīng)存在
-f file
文件 file 是普通文件
-s file
文件 file 大小不為零
-d file
文件 file 是一個(gè)目錄
-r file
文件 file 對(duì)當(dāng)前用戶可以讀取
-w file
文件 file 對(duì)當(dāng)前用戶可以寫(xiě)入
-x file
文件 file 對(duì)當(dāng)前用戶可以執(zhí)行
-g file
文件 file 的 GID 標(biāo)志被設(shè)置
-u file
文件 file 的 UID 標(biāo)志被設(shè)置
-O file
文件 file 是屬于當(dāng)前用戶的
-G file
文件 file 的組 ID 和當(dāng)前用戶相同
file1 -nt file2
文件 file1 比 file2 更新
file1 -ot file2
文件 file1 比 file2 更老



注意:上表中的 file 及 file1、file2 都是指某個(gè)文件或目錄的路徑。

2.3.1.1. 關(guān)于局部變量

在 BASH 程序中如果一個(gè)變量被使用了,那么直到該程序的結(jié)尾,該變量都一直有效。為了使得某個(gè)變量存在于一個(gè)局部程序塊中,就引入了局部變量的概念。BASH
中,在變量首次被賦初值時(shí)加上 local 關(guān)鍵字就可以聲明一個(gè)局部變量,如下面這個(gè) 例子

#!/bin/bash

HELLO=Hello

function hello {

local HELLO=World

echo $HELLO

}

echo $HELLO

hello

echo $HELLO

該程序的執(zhí)行結(jié)果是:

Hello

World

Hello

這個(gè)執(zhí)行結(jié)果表明全局變量 $HELLO 的值在執(zhí)行函數(shù) hello 時(shí)并沒(méi)有被改變。也就是說(shuō)局部變量 $HELLO 的影響只存在于函數(shù)那個(gè)程序塊中。

2.3.2. BASH 中的變量與 C 語(yǔ)言中變量的區(qū)別

這里我們?yōu)樵瓉?lái)不熟悉 BASH 編程,但是非常熟悉 C 語(yǔ)言的程序員總結(jié)一下在 BASH 環(huán)境中使用變量需要注意的問(wèn)題。

1,BASH 中的變量在引用時(shí)都需要在變量前加上 "$" 符號(hào)( 第一次賦值及在For循環(huán)的頭部不用加
"$"符號(hào) );

2,BASH 中沒(méi)有浮點(diǎn)運(yùn)算,因此也就沒(méi)有浮點(diǎn)類(lèi)型的變量可用;

3,BASH 中的整形變量的比較符號(hào)與 C 語(yǔ)言中完全不同,而且整形變量的算術(shù)運(yùn)算也需要經(jīng)過(guò) let 或 expr 語(yǔ)句來(lái)處理;

2.4????BASH 中的基本流程控制語(yǔ)法

BASH 中幾乎含有 C 語(yǔ)言中常用的所有控制結(jié)構(gòu),如條件分支、循環(huán)等,下面逐一介紹。

2.4.1 if...then...else

if 語(yǔ)句用于判斷和分支,其語(yǔ)法規(guī)則和 C 語(yǔ)言的 if 非常相似。其幾種基本結(jié)構(gòu)為:

if [ expression ]

then

statments

fi

或者

if [ expression ]

then

statments

else

statments

fi

或者

if [ expression ]

then

statments

else if [ expression ]

then

statments

else

statments

fi

或者

if [ expression ]

then

statments

elif [ expression ]

then

statments

else

statments

fi

值得說(shuō)明的是如果你將 if 和 then 簡(jiǎn)潔的寫(xiě)在一行里面,就必須在 then 前面加上分號(hào),如: if
[ expression ]; then ...
。下面這個(gè) 例子 說(shuō)明了如何使用 if 條件判斷語(yǔ)句:

#!/bin/bash



if [ $1 -gt 90 ]

then

echo "Good, $1"

elif [ $1 -gt 70 ]

then

echo "OK, $1"

else

echo "Bad, $1"

fi



exit 0

上面例子中的 $1 是指命令行的第一個(gè)參數(shù),這個(gè)會(huì)在后面的“ BASH 中的特殊保留字 ”中講解。

2.4.2 for

for 循環(huán)結(jié)構(gòu)與 C 語(yǔ)言中有所不同,在 BASH 中 for 循環(huán)的基本結(jié)構(gòu)是:

for $var in [list]

do

statments

done

其中 $var 是循環(huán)控制變量,[list] 是 $var 需要遍歷的一個(gè)集合,do/done 對(duì)包含了循環(huán)體,相當(dāng)于 C 語(yǔ)言中的一對(duì)大括號(hào)。另外如果do
和 for 被寫(xiě)在同一行,必須在 do 前面加上 ";"。如: for $var in
[list]; do
。下面是一個(gè)運(yùn)用 for 進(jìn)行循環(huán)的例子:

#!/bin/bash



for day in Sun Mon Tue Wed Thu Fri Sat

do

echo $day

done



# 如果列表被包含在一對(duì)雙引號(hào)中,則被認(rèn)為是一個(gè)元素

for day in "Sun Mon Tue Wed Thu Fri Sat"

do

echo $day

done



exit 0

注意上面的例子中,在 for 所在那行的變量 day 是沒(méi)有加 "$" 符號(hào)的,而在循環(huán)體內(nèi),echo 所在行變量 $day 是必須加上
"$" 符號(hào)的。另外如果寫(xiě)成 for day 而沒(méi)有后面的 in [list] 部分,則 day 將取遍命令行的所有參數(shù)。如 這個(gè)程序

#!/bin/bash



for param

do

echo $param

done



exit 0

上面這個(gè)程序?qū)⒘谐鏊忻钚袇?shù)。for 循環(huán)結(jié)構(gòu)的循環(huán)體被包含在 do/done 對(duì)中,這也是后面的 while、until 循環(huán)所具有的特點(diǎn)。

2.4.3 while

while 循環(huán)的基本結(jié)構(gòu)是:

while [ condition ]

do

statments

done

這個(gè)結(jié)構(gòu)請(qǐng)大家自己編寫(xiě)一個(gè)例子來(lái)驗(yàn)證。

2.4.4 until

until 循環(huán)的基本結(jié)構(gòu)是:

until [ condition is TRUE ]

do

statments

done

這個(gè)結(jié)構(gòu)也請(qǐng)大家自己編寫(xiě)一個(gè)例子來(lái)驗(yàn)證。

2.4.5 case

BASH 中的 case 結(jié)構(gòu)與 C 語(yǔ)言中的 switch 語(yǔ)句的功能比較類(lèi)似,可以用于進(jìn)行多項(xiàng)分支控制。其基本結(jié)構(gòu)是:

case "$var" in

condition1 )

statments1;;

condition2 )

statments2;;

...

* )

default statments;;

esac

下面這個(gè)程序是運(yùn)用 case 結(jié)構(gòu)進(jìn)行分支執(zhí)行的 例子

#!/bin/bash



echo "Hit a key, then hit return."

read Keypress



case "$Keypress" in

[a-z] ) echo "Lowercase letter";;

[A-Z] ) echo "Uppercase letter";;

[0-9] ) echo "Digit";;

* ) echo "Punctuation, whitespace, or other";;

esac



exit 0

上面例子中的第四行 "read Keypress" 一句中的 read 語(yǔ)句表示從鍵盤(pán)上讀取輸入。這個(gè)命令將在本講義的 BASH
的其他高級(jí)問(wèn)題
中講解。

2.4.6 break/continue

熟悉 C 語(yǔ)言編程的都很熟悉 break 語(yǔ)句和 continue 語(yǔ)句。BASH 中同樣有這兩條語(yǔ)句,而且作用和用法也和 C 語(yǔ)言中相同,break
語(yǔ)句可以讓程序流程從當(dāng)前循環(huán)體中完全跳出,而 continue 語(yǔ)句可以跳過(guò)當(dāng)次循環(huán)的剩余部分并直接進(jìn)入下一次循環(huán)。

?

2.5????函數(shù)的使用

BASH 是一個(gè)相對(duì)簡(jiǎn)單的腳本語(yǔ)言,不過(guò)為了方便結(jié)構(gòu)化的設(shè)計(jì),BASH 中也提供了函數(shù)定義的功能。BASH 中的函數(shù)定義很簡(jiǎn)單,只要向下面這樣寫(xiě)就可以了:

function my_funcname {

code block

}

或者

my_funcname() {

code block

}

上面的第二種寫(xiě)法更接近于 C 語(yǔ)言中的寫(xiě)法。BASH 中要求函數(shù)的定義必須在函數(shù)使用之前,這是和 C 語(yǔ)言用頭文件說(shuō)明函數(shù)方法的不同。

更進(jìn)一步的問(wèn)題是如何給函數(shù)傳遞參數(shù)和獲得返回值。BASH 中函數(shù)參數(shù)的定義并不需要在函數(shù)定義處就制定,而只需要在函數(shù)被調(diào)用時(shí)用 BASH 的保留變量
$1 $2 ... 來(lái)引用就可以了;BASH 的返回值可以用 return 語(yǔ)句來(lái)指定返回一個(gè)特定的整數(shù),如果沒(méi)有 return 語(yǔ)句顯式的返回一個(gè)返回值,則返回值就是該函數(shù)最后一條語(yǔ)句執(zhí)行的結(jié)果(一般為
0,如果執(zhí)行失敗返回錯(cuò)誤碼)。函數(shù)的返回值在調(diào)用該函數(shù)的程序體中通過(guò) $? 保留字來(lái)獲得。下面我們就來(lái)看一個(gè)用函數(shù)來(lái)計(jì)算整數(shù)平方的 例子

#!/bin/bash



square() {

let "res = $1 * $1"

return $res

}



square $1

result=$?

echo $result



exit 0

?

?

?

2 BASH 的基本語(yǔ)法


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 高清久久 | 色在线视频 | 日本中文字幕一区二区有码在线 | 99精品国产综合久久久久 | 久久婷婷综合中文字幕 | 在线黄色免费 | 日本视频在线观看不卡高清免费 | 成人精品一区二区三区 | 日本不卡一区二区三区视频 | 日韩精品一区二区三区中文3d | 香蕉视频亚洲一级 | 橘梨纱视频一区二区在线观看 | 青草久久精品 | 中文字幕波多野不卡一区 | 精品久久一区二区 | 麻豆va一区二区三区久久浪 | 国产欧美一区视频在线观看 | 欧美日韩中文一区 | 99久久免费精品高清特色大片 | 一级寡妇乱色毛片全18 | 四虎在线播放免费永久视频 | 精品无人区乱码一区二区 | 2021最新久久久视精品爱 | 玖玖爱精品 | 婷婷操 | 亚洲永久精品一区二区三区 | 奇米第四色影视 | 亚洲中字幕 | 天天综合在线观看 | 久久精品区 | 久久综合给合久久狠狠狠97色 | 色综合图 | 人人狠狠综合久久亚洲婷婷 | 一级做受毛片免费大片 | 毛片免费全部免费观看 | 国产成人精品免费视频 | 亚洲精品久久婷婷爱久久婷婷 | 免费福利网站在线观看 | 久久久久视频精品网 | 9久热这里只有精品免费 | 一级片a级片|