shell程式設計中的小問題

2022-05-13 12:37:19 字數 1091 閱讀 9896

1、變數用=賦值時左邊不能有空格。例如username =nihao回車後會報username:未找到命令。因為這裡把username當做命令來處理了。正確的做法是username=nihao。

仔細才是最重要的,像這樣的小問題真是很難發現。不過在用vim編輯器時有高亮顯示命令是白色的,變數時綠色的。

2、用read -p 命令讀取使用者輸入時,在-p後的提示後的變數名必須要有空格。例如read -p "input your name:"name會輸出input your name:name,此時使用者的輸入不會按預期給name。正確的做法是read -p "input your name:"  name(name前的空格是必須的)。

3、在用==進行字串比較時,==前後必須要有空格,若沒有則是一直為真。例如:

#!/bin/bash

#if [[ "1"=="2" ]];then

echo "xiangdeng"

else

echo "budeng"

fi

只會輸出xiangdeng,必須將[[ "1"=="2" ]]改成[[ "1" == "2" ]]才可以。

4、和一般可以替換使用,但在=~(即在模式替換的時候)時必須使用

5、if [ ! -e "/etc/passwd" ]這裡!和後面的-e要有空格。

6、算術運算需注意什麼時候加$,例如下面sum=$[sum+=$num],裡面的sum不能加$,因為這是變數賦值,而算完後在外面加$,是取變數的值。

#!/bash/bin

#declare -i sum=0

for num in ;do

sum=$[sum+=$num]

shift

done

echo $sum

7、字串測試中用到=~去通配兩邊的時候在右邊通配項不能加引號。例如 [[ $? -eq 0 ]] && [[ "$isblock" =~ .*block.* ]],在.*block.*上是不能加""的,如果加上代表完全匹配。兩邊必須一樣才算匹配成功。

8、在grep匹配中,右邊匹配的內容若含有-需要用\轉義,否則不能正常匹配。如echo -20|grep "\-20"

程式設計中的小問題

syntaxerror unicode error unicodeescape codec can t decode bytes in position 2 3 truncated u xx escape 在macos寫的python 放到window執行報錯。原因 在windows系統當中讀取檔案...

C 程式設計小問題

1.vs2008中使 對齊的快捷鍵 全選 ctrl a ctrl k,f 格式化 2.定位 前乙個花括號的方法 ctrl 3.opencv 中在使用mat roi 時,需要注意 如果對roi處理會影響全域性的 所以在處理時需要新宣告乙個mat然後clone到這再處理。4.補充vs快捷鍵 在vc200...

Android程式設計中的常見小問題ZZ

在我們繼承系統dialog 實現自己的 dialog 時,可以通過設定 style 來實現 android color transparent android color transparent 0.8 android color transparent android color transpar...