糾結一段**好幾天,linux下不會看反彙編,不知道shell裡面怎麼跑,於是栽了個跟頭。
#!/bin/bash
str1="hello"
str2="world"
if [ "$str1"=="$str2" ]; then
#"=="兩邊沒有空格
echo "$str1 == $str2"
else
echo "$str1 != $str2"
fiif [ "$str1" == "$str2" ]; then
#"=="兩邊有空格
echo "$str1 == $str2"
else
echo "$str1 != $str2"
fi
結果大失所望,第一次竟然輸出hello == world !」==「兩邊的空格對shell到怎麼做了什麼?百思不得其解,問了杰哥,杰哥回給我的郵件。
if [ 1 ]; then
.....
if [ 0 ] ;then
.....
if [ -1 ]; then
.....
if [ "$hello" ]; then
....
if [ "hello" ]; then
.....
if [ "hello"= ]; then #「=」兩邊沒有空格
.....
再看:」==「兩邊都有空格,變化的是」「左右的空格!
[firefox@fire shell]$ [ "china" == "china" ] && echo "yes"
yes[firefox@fire shell]$ ["hello" == "china" ] && echo "yes"
bash: [hello: command not found...
檔案搜尋失敗: invalid input passed to daemon: char '[' in text!
yes[firefox@fire shell]$ [ "hello" == "china"] && echo "yes"
bash: [: 缺少 `]'
我在命令列裡,輸入
$ help [
出來的結果解決了所有矛盾,打破了我一直以來的誤區,」[「也是個命令!
if [ "$str1" == "$str2" ]
#有空格「["是命令,空格,第乙個引數是$str1,空格,第二個引數是」==「,空格,第三個引數是$str2,空格,第四個引數是"]「。
天! 「]」只是簡簡單單的乙個引數而已!!!
bash 中的括號
命令組。括號中的命令將會新開乙個子shell順序執行,所以括號中的變數不能夠被指令碼餘下的部分使用。括號中多個命令之間用分號隔開,最後乙個命令可以沒有分號,各命令和括號之間不必有空格。命令替換。等同於 cmd shell掃瞄一遍命令列,發現了 cmd 結構,便將 cmd 中的cmd執行一次,得到其標...
bash中的陣列
定義 array 1 two 3 four array index value 訪問陣列元素 array必須用大括號括起來 獲取陣列所有元素 元素之間以空格分隔 獲取陣列長度 按下標遍歷 for i in seq 1 do echo i,done 按元素遍歷 必須加雙引號 for var in 注 ...
bash中的測試
三種測試命令 test expression expression expression expression中沒乙個元素前後都要有空格 數值測試 gt 是否大於 ge 是否大於等於 eq 是否等於 ne 是否不等於 lt 是否小於 le 是否小於等於 字串測試 是否等於 是否大於 是否小於 是否不...