1、擷取字串
擷取字串的兩種方式:
echo $
expr substr $var $sta $count
var:
表示被擷取的字串源。
sta:表示開始擷取的位置。
count
:擷取的字串的個數
上述兩種方式有一些小的區別,下面用乙個例子來說明:
s=12345
sta=2
count=2
執行echo $
結果輸出:
34執行
expr substr $var $sta $count
結果輸出:
23此外:在
ksh中並不支援
echo
的這種方式。
2、變數定義
在bash
中,如果定義:
a=3此時
a既可以當做字串使用也可以當做數字使用
在ksh
中,如果定義:
a=3則
a只能當做變字串使用
一種比較通用的方法就是使用
typeset
:typeset –i a=0
此外在ksh
中typeset
還用很多引數可用:
1:typeset
將顯示所有變數
2:typeset的-u
選項可以將乙個
變數的字元
變成大寫
/home/lee#typeset -u var=abc
/home/lee#echo $var
abc3:typeset的-l
選項將乙個
變數的字元
變成小寫
/home/lee#typeset -l var=abc
/home/lee#echo $var
abc4:typeset的-l
選項把變數
變成乙個左對齊的
4個字串
,有些像字串擷取
:-)/home/lee#typeset -l4 var=abcdefg
/home/lee#echo $var
abcd
5:typeset的-r
選項把變數
變成乙個右對齊的
4個字串
/home/lee#typeset -r4 var=abcdefg
/home/lee#echo $var
defg
6:typeset的-z
選項把串
變成乙個空填充,佔
15個字元位的串
,冒號用來保
護空白符
/home/lee#typeset -z15 var="abc ddd"
/home/lee#echo "$var"
^^^^^^^^abc ddd #^為空白
/home/lee#typeset -lz15 var="abc 123"
/home/lee#echo "$var$var"
abc 123 abc 1237:變
量n是乙個被
設定成乙個整數的變數
,typeset
命令將整數n前面
補齊0,共15
個字元位
/home/lee#typeset -i n=24
/home/lee#typeset -z15 n
/home/lee#echo $n
0000000000000248:變
量answer被給
定乙個值
--yes並變
成乙個小寫,左
對齊,乙個字元的串
/home/lee#typeset -ll1 answer=yes
/home/lee#echo $answer
ytypeset
其他用法
:typeset -i num #強制
num為
乙個整數,如
:/home/lee#typeset -i num=10
/home/lee#echo $num
10/home/lee#typeset -i16 num=10
/home/lee#echo $num
16#a
/home/lee#typeset -i2 num=10
/home/lee#echo $num
2#1010
/home/lee#typeset -i8 num=10
/home/lee#echo $num
8#12
typeset -x #顯示被
匯出的變數
typeset a b c #
如果在乙個函式裡定義,
則把a b c建立
為區域性變數
typeset -r x=var#設定一
個唯讀變數
3、shell中sql*plus的呼叫
呼叫之前,需先宣告四個環境變數:
export oracle_sid=orcl #oracle sid
export path=$path:$oracle_home/bin #
path
環境變數
export nls_lang=american_america.ja16sjis #db
字符集如果您的資料裡面存在除英文以外的語言,則必須設定
nls_lang
的值,該值必須與您的
db語言一致:查詢方法如下
select userenv('language') from dual
連線方法:
sqlplus -s $oracle_user/$oracle_pwd << eof
@$sql_script;
eof-s
引數表示不顯示
sql*plus
的連線資訊在控制台。
如果想獲取
sql的返回資訊,則可用(注意等於號後面的命令由一對反引號(`)包圍)
sql_buf=`
sqlplus -s $oracle_user/$oracle_pwd << eof
@$sql_script;
eof`
上述方法在
ksh中呼叫的時候,如果返回的資料太大的話,則會產生乙個
shell
錯誤具體的錯誤**是:
./vuas1000.sh[65]: no space
error 45 initializing sql*plus
internal error
t0nsha補充:
如果想獲取
sql的返回資訊,也可直接用grep獲取,再通過grep的返回值($?)進行判斷:
一些shell技巧
1.批量刪除某些指定檔案 我們都知道用find,很快就可以給出 find name your pattern exec rm f 恩,不過還有更快更簡潔的方法,用find自帶的delete find name your pattern delete 2.列出當前目錄下的所有目錄 不遞迴 你能想到幾種...
shell一些技巧和知識點
表示的是乙個命令執行完,忽略其返回值,繼續執行下一行 表示只有前面為true才繼續執行後面的命令,否則忽略,可以理解為短路執行 表示子前面為false才繼續執行後面的命令,這個比以前看到的解釋更容易理解 凡是要輸出字串的,最好用引號括起來,否則容易被shell理解為命令,這一點很容易疏忽 是一種命令...
總結Django一些開發經驗
最喜歡的還是 django 的 orm 框架。公司的專案都是前後分離的,使用 django 做後端介面開發還是很高效的。特此總結一些 django 開發的小經驗。先說一些最最基礎的吧。使用 virtualenv 隔離開發環境 使用 pip 管理專案依賴,主要就是乙個小技巧,使用 pip freeze...