欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

linux學(xué)習(xí)之linux百問2,不斷更新

系統(tǒng) 2492 0

1、 for/do/done?

?

Shell腳本的 for 循環(huán)結(jié)構(gòu)和C語言很不一樣,它類似于某些編程語言的 foreach 循環(huán)。例如:

    #! /bin/sh



for FRUIT in apple banana pear; do

  echo "I like $FRUIT"

done
  

FRUIT 是一個(gè)循環(huán)變量,第一次循環(huán) $FRUIT 的取值是 apple ,第二次取值是 banana ,第三次取值是 pear 。再比如,要將當(dāng)前目錄下的 chap0 chap1 chap2 等文件名改為 chap0~ chap1~ chap2~ 等(按慣例,末尾有~字符的文件名表示臨時(shí)文件),這個(gè)命令可以這樣寫:

    $ for FILENAME in chap?; do mv $FILENAME $FILENAME~; done
  

也可以這樣寫:

    $ for FILENAME in `ls chap?`; do mv $FILENAME $FILENAME~; done
  

2、 while/do/done

?

while 的用法和C語言類似。比如一個(gè)驗(yàn)證密碼的腳本:

    #! /bin/sh



echo "Enter password:"

read TRY

while [ "$TRY" != "secret" ]; do

  echo "Sorry, try again"

  read TRY

done
  

下面的例子通過算術(shù)運(yùn)算控制循環(huán)的次數(shù):

    #! /bin/sh



COUNTER=1

while [ "$COUNTER" -lt 10 ]; do

  echo "Here we go again"

  COUNTER=$(($COUNTER+1))

done
  

Shell還有until循環(huán),類似C語言的do...while循環(huán)。本章從略。

3、 位置參數(shù)和特殊變量

有很多特殊變量是被Shell自動(dòng)賦值的,我們已經(jīng)遇到了 $? $1 ,現(xiàn)在總結(jié)一下:

常用的位置參數(shù)和特殊變量

$0 相當(dāng)于C語言 main 函數(shù)的 argv[0]
$1 $2 ... 這些稱為位置參數(shù)(Positional Parameter) ,相當(dāng)于C語言 main 函數(shù)的 argv[1] argv[2] ...
$# 相當(dāng)于C語言 main 函數(shù)的 argc - 1 ,注意這里的 # 后面不表示注釋
$@ 表示參數(shù)列表 "$1" "$2" ... ,例如可以用在 for 循環(huán)中的 in 后面。
$? 上一條命令的Exit Status
$$ 當(dāng)前Shell的進(jìn)程號(hào)

?

位置參數(shù)可以用 shift 命令左移。比如 shift 3 表示原來的 $4 現(xiàn)在變成 $1 ,原來的 $5 現(xiàn)在變成 $2 等等,原來的 $1 $2 $3 丟棄, $0 不移動(dòng)。不帶參數(shù)的 shift 命令相當(dāng)于 shift 1 。例如:

    #! /bin/sh



echo "The program $0 is now running"

echo "The first parameter is $1"

echo "The second parameter is $2"

echo "The parameter list is $@"

shift

echo "The first parameter is $1"

echo "The second parameter is $2"

echo "The parameter list is $@"
  

4、函數(shù)

和C語言類似,Shell中也有函數(shù)的概念,但是函數(shù)定義中沒有返回值也沒有參數(shù)列表。例如:

      #! /bin/sh



foo(){ echo "Function foo is called";}

echo "-=start=-"

foo

echo "-=end=-"
    

注意函數(shù)體的左花括號(hào){和后面的命令之間必須有空格或換行,如果將最后一條命令和右花括號(hào) } 寫在同一行,命令末尾必須有;號(hào)。

在定義 foo() 函數(shù)時(shí)并不執(zhí)行函數(shù)體中的命令,就像定義變量一樣,只是給 foo 這個(gè)名字一個(gè)定義,到后面調(diào)用 foo 函數(shù)的時(shí)候(注意Shell中的函數(shù)調(diào)用不寫括號(hào))才執(zhí)行函數(shù)體中的命令。Shell腳本中的函數(shù)必須先定義后調(diào)用,一般把函數(shù)定義都寫在腳本的前面,把函數(shù)調(diào)用和其它命令寫在腳本的最后(類似C語言中的 main 函數(shù),這才是整個(gè)腳本實(shí)際開始執(zhí)行命令的地方)。

Shell函數(shù)沒有參數(shù)列表并不表示不能傳參數(shù),事實(shí)上,函數(shù)就像是迷你腳本,調(diào)用函數(shù)時(shí)可以傳任意個(gè)參數(shù),在函數(shù)內(nèi)同樣是用 $0 $1 $2 等變量來提取參數(shù),函數(shù)中的位置參數(shù)相當(dāng)于函數(shù)的局部變量,改變這些變量并不會(huì)影響函數(shù)外面的 $0 $1 $2 等變量。函數(shù)中可以用 return 命令返回,如果 return 后面跟一個(gè)數(shù)字則表示函數(shù)的Exit Status。

下面這個(gè)腳本可以一次創(chuàng)建多個(gè)目錄,各目錄名通過命令行參數(shù)傳入,腳本逐個(gè)測試各目錄是否存在,如果目錄不存在,首先打印信息然后試著創(chuàng)建該目錄。

      #! /bin/sh



is_directory()

{

  DIR_NAME=$1

  if [ ! -d $DIR_NAME ]; then

    return 1

  else

    return 0

  fi

}



for DIR in "$@"; do

  if is_directory "$DIR"

  then :

  else

    echo "$DIR doesn't exist. Creating it now..."

    mkdir $DIR > /dev/null 2>&1

    if [ $? -ne 0 ]; then

      echo "Cannot create directory $DIR"

      exit 1

    fi

  fi

done
    

注意 is_directory() 返回0表示真返回1表示假。


?

linux學(xué)習(xí)之linux百問2,不斷更新


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

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

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

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

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久久久久免费免费 | 欧美高清在线视频一区二区 | 亚洲国内精品 | 色悠久久久久综合网伊人男男 | 国产在线不卡 | 成人免费在线 | 久久国产天堂福利天堂 | 成人18免费网站在线观看 | 国产在线aaa片一区二区99 | 国产欧美日本亚洲精品五区 | 国产一区二区三区免费 | 男女啪啦猛视频免费 | 天天爱夜夜 | 99精品视频免费看 | 久久免费精品视频 | 日韩精品视频美在线精品视频 | 精品中文字幕在线观看 | 91久久青青草原免费 | 国产区久久 | 免费国产视频在线观看 | 久久综合五月开心婷婷深深爱 | 神秘电影91 | 久久精品在线 | 成人综合久久综合 | 97日日摸天天碰免费视频 | 日本欧美日韩 | 亚洲h视频 | 欧美亚洲一区二区三区四区 | 亚洲欧美综合日韩字幕v在线 | 成人欧美一区二区 | 日韩 欧美 国产 师生 制服 | 极品白嫩无套视频在线播放张悠雨 | 暖暖av | 国产69精品久久久久999小说 | 成av在线 | 亚洲一区二区三区四区 | 成人免费在线 | 免费播放特黄特色毛片 | 亚洲午夜精品一级在线 | 国产精品一区久久 | 视频在线一区二区 |