變量的理解

有點繞多動動手就好了

$0顯示腳本完事路徑和文件名
1.#echo $?(判斷命令執行是成功0還是失敗)
2.#ping 172.20.0.1(測主機是否連通,unreachable目標主機不通) 默認不停的ping, 所以ping -c1,則表示只讓它pinf 一次eg:#ping -c3 172.2o.0.1(只ping3次)
3.#ping -c4 172.20.0.1 &> /dev/null
#echo $?(不想顯示執行過程&> dev/null)且知道是否執行成功)

4.bash自定義返回狀態
exit [n]:自定義退出狀態碼. eg:寫這樣一段腳本
#!/bin/bash
ls
exit 10 ? ? ? ? ? ? ? ?? (自定義為10是成功。)
hostname ? ? ? ? ? (hostname將不會被執行,因為腳本一旦遇到exit命令會立即終止)
所以其執行如下
[root@centos7 ~]#sh sarg.sh ;echo $?
?? 40_scp.sh ?? bin sarg.sh ? ? 10?? (前面兩個是ls命令的結果,但是沒有看到hostname的結果用#echo $? 測試,測出的也是ls命令執行是否成功)
5.局部變量要想在當前父進程中生效,則要申明成全局 export name

算術運算:
1.let? 有沒有let的差異? :
#x=10??? ??? ? ???????? ? ? ? ? #let z=$x+$y
#y=20 ? ? ? ? ?? ? ? ? ??????? #echo $z????????????? ? (let命令能識別變量,所以變量前也可不用加$)
#z=$x+$y?? ?? ????? ? ? ?? 30????????????????? ?? ? ? ? ? ?如 z=$[x+y] ? 其結果也是
#echo $z????????????????????????????????????????????????? ? ? ? ? ? ? 30?
10+20

2.#let x++?? (加加相當于x=x+1)
#echo $x
11

3.現在輸一字符串lizhihua,讓它隨機顏色打???隨機可用(RANDOM)
#LIZHHUA=$[RANDOM%7+31];echo -e “\e[1;$[LIZHHUA]mlizhihua\e[0m”
解析:即把顏色(31到37)定義成變量 %是取膜.$[RANDOM%7+31]也可換成(( )) 或{}

4.expr
#expr 1 + 2 #expr 1+2 (expr是個命令,所以后面的幾個參數之間必須有空格) #expr 3 \* 2 (相乘*前必須用轉義符)
如果是bc 則格式為 #echo ‘算術表達式’|bc eg :#echo ‘3*5’|bc 或#echo “3+5″|bc

 

(二和十進制對比)

二進制:1???? 1 ? ? ?? 2 ?? 10???????? ? ?? 3???? 11 ? ? ? ? ? ? ? 4??? 100?????????????? 5 ? ? 101

6 ?? 110?? ? ? ? ? ? ? 7 ?? 111???????? ? ?? 8?? 200 ? ? ? ? ? ? ? 9??? 201?????????? ?? 10?? 210

異或:(前面的命令為真則執行命令2前面為假則不執行)

1.讓a,b值互換eg:
a=5;b=6;echo $a $b ;
a=$[a^b]; (a和b異或得C,所以此時a的值是中間值C)
b=$[a^b]; (a的值即中間值C和b異或所以b的結果是舊值a 5)
a=$[a^b]; (a的新值c中間值和b的新值5也就是舊值a異或結果是b的舊值)
echo $a $b 此時兩個值已完全對換
6 ? ? ?? 5
2.#a=4 解析思路:轉成二進制4=100 6=110
#b=6 a^b也即 100
#let c=a^b 110 (前對后就不執行,前錯后就執行,前錯后也錯就都不執行)
#echo $c 兩種數字相對也就是010 真假真
所以輸出結果是2

3.declare let a+=2(加等) 也就是a等于a+2
#declare -i x=10
#declare -i y=20
#declare -i z=x+y
#echo $z
30

4.編寫腳本/root/bin/sumid.sh,計算/etc/passwd 文件中的第10個用戶和第三世界第三世界20 個用戶的ID 之和?
#!/bin/bash
echo “root10 + root20=?”
root10=”`#cat /etc/passwd|head -n10|tail -n1|cut -d : -f3`”
root20=”`#cat /etc/passwd|head -n20|tail -n1|cut -d : -f3`”
AA=$[root10 + root20]
echo $AA
echo “finshied!!!”

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96184

(0)
單爆手單爆手
上一篇 2018-04-15
下一篇 2018-04-15

相關推薦

欧美性久久久久