歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> 了解Linux中bash shell腳本的語法

了解Linux中bash shell腳本的語法

日期:2017/4/19 14:20:17   编辑:Linux服務器

 1.基礎

  #!/bin/bash //bash腳本第一句都是這個,他會讓系統指定以bash來解釋這個腳本

  # //shell腳本注釋符號

  2.變量和使用

  HOME="/home" //注意賦值不要有空格

  a=123

  HOME_LIST=$(ls /home) //把命令的執行結果賦值給變量

  ehco $HOME //$ 符號是獲得變量HOME的值

  a=a+1

  系統變量:

  {GetProperty(Content)} 這個程序的執行名字

  $n  這個程序的第n個參數值,n=1...9

  $*  這個程序的所有參數

  $# 這個程序的參數個數

  $ 這個程序的PID

  $! 執行上一個背景指令的PID

  $? 上一個指令的返回值

  3.if語句

  if [ "22" -lt "33" ] then //注意空格

  echo "22 less than 33"

  else

  echo "no"

  fi //if語句的結束

  4.case語句

  echo "enter a number"

  read ans //讀取一個變量read

  case $ans in

  1)

  echo "you numer is $ans"

  ;; //注意符號是兩個 ;

  2)

  echo "you number is 2"

  ;;

  [3-9])

  echo "you number is $ans"

  ;;

  *) //*通配符

  echo "others"

  esac

  5.比較運算符

  運算符 描述 示例

  文件比較運算符

  -e filename 如果 filename 存在,則為真 [ -e /var/log/syslog ]

  -d filename 如果 filename 為目錄,則為真 [ -d /tmp/mydir ]

  -f filename 如果 filename 為常規文件,則為真 [ -f /usr/bin/grep ]

  -L filename 如

果 filename 為符號鏈接,則為真 [ -L /usr/bin/grep ]

  -r filename 如果 filename 可讀,則為真 [ -r /var/log/syslog ]

  -w filename 如果 filename 可寫,則為真 [ -w /var/mytmp.txt ]

  -x filename 如果 filename 可執行,則為真 [ -L /usr/bin/grep ]

  filename1 -nt filename2 如果 filename1 比 filename2 新,則為真 [ /tmp/install/etc/services -nt /etc/services ]

  filename1 -ot filename2 如果 filename1 比 filename2 舊,則為真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

  字符串比較運算符 (請注意引號的使用,這是防止空格擾亂代碼的好方法)

  -z string 如果 string 長度為零,則為真 [ -z "$myvar" ]

  -n string 如果 string 長度非零,則為真 [ -n "$myvar" ]

  string1 = string2 如果 string1 與 string2 相同,則為真 [ "$myvar" = "one two three" ]

  string1 != string2 如果 string1 與 string2 不同,則為真 [ "$myvar" != "one two three" ]

  算術比較運算符

  num1 -eq num2 等於 [ 3 -eq $mynum ]

  num1 -ne num2 不等於 [ 3 -ne $mynum ]

  num1 -lt num2 小於 [ 3 -lt $mynum ]

  num1 -le num2 小於或等於 [ 3 -le $mynum ]

  num1 -gt num2 大於 [ 3 -gt $mynum ]

  num1 -ge num2  

; 大於或等於 [ 3 -ge $mynum ]

  6.bash中幾種循環

  6.1. for name [ in word ] ; do list ; done

  6.2. for (( expr1 ; expr2 ; expr3 )) ; do list ; done //注意有2層括號

  6.3 while [expr] do list; done

  其中list簡單說就是一串由操作符(operator ;、&、&&、||)

  分各給出一個簡單例子:

  1.

  for filename in $(ls)

  do

  cat $filename

  done

  2.

  for((i=0; i<10; i++))

  do

  echo $i

  done

  3.

  x=1

  sum=0

  while [ $x -le 10 ] //注意[ ] 兩邊的空格

  do

  let sum=sum+$x //shell中算術計算使用let

  let x=x+1

  done

  echo $sum

Copyright © Linux教程網 All Rights Reserved