linux shell 基本語法


原創博文,轉載請標明出處--周學偉 http://www.cnblogs.com/zxouxuewei/tag/

從程序員的角度來看, Shell本身是一種用C語言編寫的程序,從用戶的角度來看,Shell是用戶與Linux操作系統溝通的橋梁。用戶既可以輸入命令執行,又可以利用 Shell腳本編程,完成更加復雜的操作。在Linux GUI日益完善的今天,在系統管理等領域,Shell編程仍然起着不可忽視的作用。深入地了解和熟練地掌握Shell編程,是每一個Linux用戶的必修 功課之一。

Linux的Shell種類眾多,常見的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell語言的語法有所不同,所以不能交換使用。每種Shell都有其特色之處,基本上,掌握其中任何一種 就足夠了。在本文中,我們關注的重點是Bash,也就是Bourne Again Shell,由於易用和免費,Bash在日常工作中被廣泛使用;同時,Bash也是大多數Linux系統默認的Shell。在一般情況下,人們並不區分 Bourne Shell和Bourne Again Shell,所以,在下面的文字中,我們可以看到#!/bin/sh,它同樣也可以改為#!/bin/bash。

一.基本語法
  1.變量:export 變量全局

#!/bin/bash
num=$1
export num echo $num

2.條件判斷

if [[ condition ]]; then
    #statements
fi
#!/bin/bash
if
[[ $1 == 1 ]]; then echo $1 else echo "value is not 1" fi

常用的判斷參數列表

3.case分支

#!/bin/bash

case $1 in
    1)
        echo "the value is 1";;
    2)
        echo "the value is 2";;
    3)
        echo "the value is 3";;
    4)
        echo "the value is 4";;
    *)
        echo "defult value"
esac

4.循環語句for

#方法1
for
(( i = 0; i < 10; i++ )); do #statements done

#方法2
for i in words; do
    #statements
done

例程:

#!/bin/bash

for (( i = 0; i < 10; i++ )); do
    echo "the value is $i"
done

5.while循環

while [[ condition ]]; do
    #statements
done

例程:

#!/bin/bash

i=$1

while [[ $i != 0 ]]; 
do
    echo "value is $i"
    let "i=i-1"
done

6,函數

  • 1、必須在調用函數地方之前,聲明函數,shell腳本是逐行運行。不會像其它語言一樣先預編譯。一次必須在使用函數前先聲明函數。
  • 2、total=$(fSum 3 2); 通過這種調用方法,我們清楚知道,在shell 中 單括號里面,可以是:命令語句。 因此,我們可以將shell中函數,看作是定義一個新的命令,它是命令,因此 各個輸入參數直接用 空格分隔。 一次,命令里面獲得參數方法可以通過:$0…$n得到。 $0代表函數本身。
  • 3、函數返回值,只能通過$? 系統變量獲得,直接通過=,獲得是空值。其實,我們按照上面一條理解,知道函數是一個命令,在shell獲得命令返回值,都需要通過$?獲得。
#!/bin/bash

function add()
{
    echo $1 $2
    return $(($1+$2))
}

value=$(add $1 $2);
echo $value,$?

7.數組

    # 取得數組元素的個數
    length=${#array_name[@]}
    # 或者
    length=${#array_name[*]}
    # 取得數組單個元素的長度
    lengthn=${#array_name[n]}

讀取數組元素值的一般格式是:

${array_name[index]}
valuen=${array_name[2]}

例程

#!/bin/bash

name=(a b c d e f g)
length=${#name[@]}
echo $length

for (( i = 0; i < $length; i++ )); do
    echo valuen=${name[$i]}
done


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM