歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Shell基礎:變量類型 & 運算符

Shell基礎:變量類型 & 運算符

日期:2017/2/28 13:48:56   编辑:SHELL編程

Shell變量

Shell支持三種類型的變量

  • 用戶自定義變量:用戶自定義的變量,變量名以英文字母或下劃線開頭,區分大小寫。
  • 位置變量:根據位置傳遞參數給腳本的變量,默認支持9個位置變量 $1,$2,$3...$9
  • 預定義變量: 預定義的特殊變量,只能使用,不能修改

用戶自定義變量

#定義變量:變量名=變量值, 可以使用"常量/其他變量/命令執行結果"賦值
var1='test var'
var2="test variable $var1"
var3=`date`

#單引號中將$就當作$, 不識別$為特殊符號,不能引用起他變量
echo 'the price is $100'

#雙引號中可以通過$來引用變量,但無法解析轉義符號,要解析轉義符和字體格式需要在echo命令前加-e 參數
echo "test /n test"
echo -e "test /n test"

#`` 反引號可以運行完其中的腳本命令然後賦值給相應的變量,如下執行結果會打印出123.sql的結果和當前日期
str=`cat 123.sql`
strdate=`date`
echo "$str $date`


#使用變量:$變量名
echo "$var $var1"

#變量後直接連接字符串需要用{}隔開使得變量可識別
echo "測試變量${var}test"

# 清除變量
unset var1

位置變量

新建根據參數執行數據庫命令腳本

#!/bin/bash
#mysql.sh

conn="/usr/local/mysql/bin/mysql -uroot -p123"

case $1 in
select)
sql="select * from test.user"
;;
delete)
sql="delete from test.user where id =$2"
;;
insert)
sql="insert into test.user(uname,psd) values('$2','$3')"
;;
update)
sql="update test.user set uname='$3', psd='$4' where id='$2'
;;
esac

$conn -e "$sql"

運行腳本,以空格為分隔符輸入不同個數的參數

#顯示test數據庫下user表的所有數據
./mysql.sh select
#刪除指定id的用戶
./mysql.sh delete 4
#插入新用戶
./mysql.sh insert newuser newpsd
#更新id=2用戶屬性
./mysqlsh update 2 newuser2 newpsd2

預定義變量  

Shell腳本支持四種形式的預定義變量:

  • $#: 所有位置參數的個數
  • $*: 所有位置參數的內容
  • $0: 當前執行的腳本名(程序或者是進程名)
  • $?: 上一條命令執行的狀態,為0代表執行成功,為其他數字(eg:127...)代表執行失敗
!/bin/bash
#test pre-defined bash variable
echo "當前腳本的位置參數有${#}個"
echo "當前正在執行的腳本名稱是: $0"

if[ [ $? == 0 ] ];then
 echo "上條命令執行成功"
else
  echo  "上條命令執行失敗"
fi

for i in $*; do
 echo "位置變量為 $i"
done 

運算符

Shell是腳本語言,變量沒有區分類型,程序在實際運行的時候根據上下文做類型判斷,默認的類型是String,如果需要把變量看作Int類型來進行加減乘除運算,需要采用特殊語法。

  • $((變量1運算符1變量2運算符2變量3)) : 此種方式用的較多, eg: $((2+3+4)); $((2*3))
  • expr 變量1 運算符 變量2 運算符 變量3 :變量和運算符之間一定要用空格隔開,此種方法比較少用, 並且乘法要用轉移\*, eg: expr 2 + 3 + 4; expr 2 \* 3

Shell常用運算符

  • /
  • %
Copyright © Linux教程網 All Rights Reserved