1.Shell中變量的原形:${var}
變量的原形:${var},即是加一個大括號來限定變量名稱的范圍
[root@bogon sh]# aa='ajax'
[root@bogon sh]# echo $aa
ajax
[root@bogon sh]# echo $aa_AA
[root@bogon sh]# echo ${aa}_AA
ajax_AA
2.$(cmd)
[root@bogon t]# ls 1.txt 2.txt
[root@bogon t]# echo $(ls)
1.txt 2.txt
echo $(ls) 執行過程shell掃描一遍命令行,發現了$(cmd)結構,便將$(cmd)中的cmd執行一次,得到其標准輸出,再將此輸出放到原來命令 echo $(ls)中的 $(ls)位置,即替換了$(ls),再執行echo命令如下:echo $(ls)被替換成了echo 1.txt 2.txt這里要注意的是$(cmd)中的命令的錯誤輸出是不會被替換的,替換的只是標准輸出
3、一串的命令執行()和{}
()和{}都是對一串的命令進行執行,但有所區別:
相同點:
()和{}都是把一串的命令放在括號里面,並且命令之間用;號隔開
不同點:
()只是對一串命令重新開一個子shell進行執行,{}對一串命令在當前shell執行
()最后一個命令可以不用分號,{}最后一個命令要用分號
[root@dev opt]# var=test
[root@dev opt]# (var='notest';echo $var;)
notest
[root@dev opt]# (var='notest';echo $var)
notest
[root@dev opt]# { var=notest;echo $var;}
notest
()里的第一個命令和左邊括號不必有空格,{}的第一個命令和左括號之間必須要有一個空格
[root@dev opt]# { var=notest;echo $var;}
notest
()和{}中括號里面的某個命令的重定向只影響該命令,但括號外的重定向則影響到括號里的所有命令
從1加到100的和:
[root@dev opt]# cat for.sh
#!/bin/bash
sum=0
for ((i=1; i<=100; i++))
do
sum=`expr $sum + $i`
done
echo $sum