欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
linux中的(),(()),[],[[]],{}的作用
()

命令組.在括號中的命令列表, 將會(huì )作為一個(gè)子shell來(lái)運行.
在括號中的變量,由于是在子shell中,所以對于腳本剩下的部分是不可用的. 父進(jìn)程, 也就是腳本本身, 將不能夠讀取在子進(jìn)程中創(chuàng )建的變量, 也就是在子shell中創(chuàng )建的變量.
(cmd1;cmd2;cmd3)

初始化數組.
Array=(element1 element2 element3)

$(...)

相當于`...`命令,返回括號中命令執行的結果

let命令


(( ))
  
(( ... ))結構可以用來(lái)計算并測試算術(shù)表達式的結果. 退出狀態(tài)將會(huì )與[ ... ]結構完全相反!還可應用到c風(fēng)格的for,while循環(huán)語(yǔ)句,(( )) 中,所有的變量(加不加$無(wú)所謂)都是數值。

$((...))結構的表達式是C風(fēng)格的表達式,其返回的結果是表達式值,其中變量引用可不用‘$’(當然也可以)

for((...;...;...))
do
  cmd
done

while ((...))
do
  cmd
done

比較操作符

<

    小于

    (("$a" < "$b"))
<=

    小于等于

    (("$a" <= "$b"))
>

    大于

    (("$a" > "$b"))
>=

    大于等于

    (("$a" >= "$b"))


(( 0 ))
echo "Exit status of \"(( 0 ))\" is $?."         # 1
   
(( 1 ))
echo "Exit status of \"(( 1 ))\" is $?."         # 0

(( 5 > 4 ))                                      # 真
echo "Exit status of \"(( 5 > 4 ))\" is $?."     # 0

(( 5 > 9 ))                                      # 假
echo "Exit status of \"(( 5 > 9 ))\" is $?."     # 1

(( 5 - 5 ))                                      # 0
echo "Exit status of \"(( 5 - 5 ))\" is $?."     # 1

(( 5 / 4 ))                                      # 除法也可以.
echo "Exit status of \"(( 5 / 4 ))\" is $?."     # 0

(( 1 / 2 ))                                      # 除法的計算結果 < 1.
echo "Exit status of \"(( 1 / 2 ))\" is $?."     # 截取之后的結果為 0.
                                                  # 1

(( 1 / 0 )) 2>/dev/null                          # 除數為0, 非法計算.
#         
echo "Exit status of \"(( 1 / 0 ))\" is $?."     # 1


for ((a=1; a <= LIMIT ; a++))  # 雙圓括號, 并且"LIMIT"變量前面沒(méi)有"$".
do
   echo -n "$a "
done

while (( a <= LIMIT ))   # 雙圓括號, 變量前邊沒(méi)有"$".
do
   echo -n "$a "
   ((a += 1))   # let "a+=1"
done

a=2
b=$(($a*4))     #a=2 b=8
c=$((a*3))      #a=2 c=6


[ ]

條件測試表達式放在[ ]中. 值得注意的是[是shell內建test命令的一部分, 并不是/usr/bin/test中的外部命令的一個(gè)鏈接.

文件測試操作符(如果下面的條件成立將會(huì )返回真)

-e

    文件存在(推薦用)
-a

    文件存在(不推薦用)

-f

    表示這個(gè)文件是一個(gè)一般文件(并不是目錄或者設備文件)
-s

    文件大小不為零
-d

    表示這是一個(gè)目錄
-b

    表示這是一個(gè)塊設備(軟盤(pán), 光驅, 等等.)
-c

    表示這是一個(gè)字符設備(鍵盤(pán), modem, 聲卡, 等等.)
-p

    這個(gè)文件是一個(gè)管道
-h

    這是一個(gè)符號鏈接
-L

    這是一個(gè)符號鏈接
-S

    表示這是一個(gè)socket
-t

    文件(描述符)被關(guān)聯(lián)到一個(gè)終端設備上

    這個(gè)測試選項一般被用來(lái)檢測腳本中的stdin([ -t 0 ]) 或者stdout([ -t 1 ])是否來(lái)自于一個(gè)終端.
-r

    文件是否具有可讀權限(指的是正在運行這個(gè)測試命令的用戶(hù)是否具有讀權限)
-w

    文件是否具有可寫(xiě)權限(指的是正在運行這個(gè)測試命令的用戶(hù)是否具有寫(xiě)權限)
-x

    文件是否具有可執行權限(指的是正在運行這個(gè)測試命令的用戶(hù)是否具有可執行權限)
-g

    set-group-id(sgid)標記被設置到文件或目錄上

    如果目錄具有sgid標記的話(huà), 那么在這個(gè)目錄下所創(chuàng )建的文件將屬于擁有這個(gè)目錄的用戶(hù)組, 而不必是創(chuàng )建這個(gè)文件的用戶(hù)組. 這個(gè)特性對于在一個(gè)工作組中共享目錄非常有用.

-u

    set-user-id (suid)標記被設置到文件上

    如果一個(gè)root用戶(hù)所擁有的二進(jìn)制可執行文件設置了set-user-id標記位的話(huà), 那么普通用戶(hù)也會(huì )以root權限來(lái)運行這個(gè)文件. [1] 這對于需要訪(fǎng)問(wèn)系統硬件的執行程序(比如pppd和cdrecord)非常有用. 如果沒(méi)有suid標志的話(huà), 這些二進(jìn)制執行程序是不能夠被非root用戶(hù)調用的.

                  -rwsr-xr-t    1 root       178236 Oct  2  2000 /usr/sbin/pppd
                 

    對于設置了suid標志的文件, 在它的權限列中將會(huì )以s表示.
-k

    設置粘貼位

    對于"粘貼位"的一般了解, save-text-mode標志是一個(gè)文件權限的特殊類(lèi)型. 如果文件設置了這個(gè)標志, 那么這個(gè)文件將會(huì )被保存到緩存中, 這樣可以提高訪(fǎng)問(wèn)速度. [2] 粘貼位如果設置在目錄中, 那么它將限制寫(xiě)權限. 對于設置了粘貼位的文件或目錄, 在它們的權限標記列中將會(huì )顯示t.

                  drwxrwxrwt    7 root         1024 May 19 21:26 tmp/
                 
    如果用戶(hù)并不擁有這個(gè)設置了粘貼位的目錄, 但是他在這個(gè)目錄下具有寫(xiě)權限, 那么這個(gè)用戶(hù)只能在這個(gè)目錄下刪除自己所擁有的文件. 這將有效的防止用戶(hù)在一個(gè)公共目錄中不慎覆蓋或者刪除別人的文件. 比如說(shuō)/tmp目錄. (當然, 目錄的所有者或者root用戶(hù)可以隨意刪除或重命名其中的文件.)

-O

    判斷你是否是文件的擁有者
-G

    文件的group-id是否與你的相同
-N

    從文件上一次被讀取到現在為止, 文件是否被修改過(guò)

f1 -nt f2

    文件f1比文件f2新
f1 -ot f2

    文件f1比文件f2舊
f1 -ef f2

    文件f1和文件f2是相同文件的硬鏈接
!

    "非" -- 反轉上邊所有測試的結果(如果沒(méi)給出條件, 那么返回真).


比較操作符


整數比較

-eq

    等于

-ne

    不等于

-gt

    大于

-ge

    大于等于

-lt

    小于

-le

    小于等于


字符串比較

=

    等于

==

    等于,與=等價(jià).(==比較操作符在雙中括號對和單中括號對中的行為是不同的)

      [[ $a == z* ]]    # 如果$a以"z"開(kāi)頭(模式匹配)那么結果將為真
      [[ $a == "z*" ]]  # 如果$a與z*相等(就是字面意思完全一樣), 那么結果為真.
      
      [ $a == z* ]      # 文件擴展匹配(file globbing)和單詞分割有效.
      [ "$a" == "z*" ]  # 如果$a與z*相等(就是字面意思完全一樣), 那么結果為真.

!=

    不等號(這個(gè)操作符將在[[ ... ]]結構中使用模式匹配)

<

    小于, 按照ASCII字符進(jìn)行排序(注意"<"使用在[ ]結構中的時(shí)候需要被轉義)
>

    大于, 按照ASCII字符進(jìn)行排序(注意">"使用在[ ]結構中的時(shí)候需要被轉義)

-z

    字符串為"null", 意思就是字符串長(cháng)度為零
-n

    字符串不為"null".

-a

    邏輯與

-o

    邏輯或


{xxx,yyy,zzz,...}

大括號擴展.
echo {1..20}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
cat {file1,file2,file3} > combined_file
# 把file1, file2, file3連接在一起, 并且重定向到combined_file中.
cp file22.{txt,backup}
# 拷貝"file22.txt"到"file22.backup"中

在大括號中, 不允許有空白, 除非這個(gè)空白被引用或轉義.

echo {file1,file2}\ :{\ A," B",' C'}

file1 : A file1 : B file1 : C file2 : A file2 : B file2 : C

代碼塊


這個(gè)結構事實(shí)上創(chuàng )建了一個(gè)匿名函數(一個(gè)沒(méi)有名字的函數). 然而, 與"標準"函數不同的是, 在其中聲明的變量,對于腳本其他部分的代碼來(lái)說(shuō)還是可見(jiàn)的(除了用declare,typeset命令聲明的變量)


()會(huì )開(kāi)啟一個(gè)新的子shell,{}不會(huì )開(kāi)啟一個(gè)新的子shell

(())常用于算術(shù)運算比較,[[]]常用于字符串的比較.

$()返回括號中命令執行的結果

$(())返回的結果是括號中表達式值

${ }參數替換與擴展

參數替換

${var}
${var}=$var

${var:-default}    ${var-default}
如果var未set,那么就是用default.兩者之間不同只有當var為空變量時(shí),前者為default,后者為空.

${var:=default}    ${var=default}
如果var未set,那么就設置default.兩者之間不同只有當var為空變量時(shí),前者設置為default,后者設置為空.

${var:+default}    ${var+default}
如果var被set,就是用default.未set,就使用null字符串.兩者之間不同只有當var為空變量時(shí),前者為null字符串,后者為default.

上面三種參數替換中,第二種使用后變量的值被改變.

參數替換擴展

${#var}    ${#array}
字符串長(cháng)度或數組第一個(gè)元素的字符串長(cháng)度
例外:
${#*}、${#@}指位置參數的個(gè)數.
${#array
  • },$[#array[@]}指數組元素的個(gè)數

    ${var#pattern}    ${var##pattern}
    從var開(kāi)頭刪除最近或最遠匹配pattern的子串.

    ${var%pattern}    ${var%%pattern}
    從var結尾刪除最近或最遠匹配pattern的子串.

    ${var:pos}
    變量var從位置pos開(kāi)始擴展.

    ${var:pos:len}
    從位置pos開(kāi)始,并擴展len長(cháng)度個(gè)字符

    ${var/pattern/replacement}    ${var//pattern/replacement}
    使用replacement來(lái)替換var中的第一個(gè)或所有pattern的匹配.

    ${var/#pattern/replacement}
    如果var的前綴匹配到了pattern,那么就用replacement來(lái)替換pattern.

    ${var/%pattern/replacement}
    如果var的后綴匹配到了pattern,那么就用replacement來(lái)替換pattern.

    ${!varprefix*}    ${!varprefix@}
    前邊所有聲明過(guò)的,以varprefix為前綴的變量名.


    [[]]就是條件表達式,在bash中,字符串比較用  > < != == <= >= 只是在[]中 < >需要轉義;對于數值比較.用 -lt -le -eq -ge -gt 來(lái)比較,與[[]]中表達不太一樣,在[ ] 中的 < > 需要用轉義 \< \>,如果有多個(gè)表達式,在[[ ]] 中用 && || 來(lái)組合,而[] 中是用 -a -o 來(lái)組合
  • 本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
    打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
    猜你喜歡
    類(lèi)似文章
    一文讀懂 Shell 中各種括號的作用
    Shell括號之間的區別
    Linux Shell簡(jiǎn)明教程(一) | 果凍想
    Linux下的shell編程入門(mén) (2)
    Ubuntu中文論壇 ? 查看主題 - [分享]Shell編程基礎
    Linux 腳本編寫(xiě)基礎
    更多類(lèi)似文章 >>
    生活服務(wù)
    分享 收藏 導長(cháng)圖 關(guān)注 下載文章
    綁定賬號成功
    后續可登錄賬號暢享VIP特權!
    如果VIP功能使用有故障,
    可點(diǎn)擊這里聯(lián)系客服!

    聯(lián)系客服

    欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久