shell 變量的 {} ()


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM