셸 스 크 립 트 의 $(), $(), ` 와 ${} 의 차이

5759 단어
shell  스 크 립 트 의 명령 실행
1. bash 에서 $( )` ` (반 따옴표) 는 모두 명령 으로 교체 된다.
명령 교체 와 변수 교체 의 차이 가 많 지 않 습 니 다. 명령 행 을 재 구성 하 는 데 사 용 됩 니 다. 따옴표 에 있 는 명령 행 을 먼저 완성 한 다음 그 결 과 를 교체 한 다음 에 새로운 명령 행 을 재 구성 합 니 다.
$() 와 ''
조작 에 있어 서 이 두 가 지 는 모두 해당 하 는 효 과 를 얻 었 지만 $() 를 사용 하 는 것 을 권장 합 니 다. 이 유 는 다음 과 같 습 니 다.
'' 매우 쉽게 '와 혼 란 스 럽 게 한다. 특히 초보 자 에 게 는 $() 가 비교적 직관 적 이다.마지막 으로 $() 의 단점 은 모든 유 닉 스 시스템 이 이런 방식 을 지원 하 는 것 은 아니 지만 반 따옴표 는 긍정 적 으로 지원 합 니 다.
명령 삽입 에 대하 여:
  $(ps -ef|grep `ps -ef|grep nginx |grep 'ottcache'|grep 'master process'|awk '{print $2}' ` |grep 'worker process'|awk '{print $2}')
안의 명령 은 '반 따옴표 로 pid 를 얻어 내 고 이 위 치 를 교체 합 니 다. $()  다른 명령 을 집행 하 다.
[root@CGSLV5_03 home]# echo today is $(date "+%Y-%m-%d")
today is 2019-08-14
[root@CGSLV5_03 home]# echo today is `date "+%Y-%m-%d"`
today is 2019-08-14
[root@CGSLV5_03 home]#

[root@localhost ~]# echo Linux `echo Shell `echo today is `date "+%Y-%m-%d"``` Linux Shellecho today is 2017-11-07 # `` [root@localhost ~]# echo Linux `echo Shell $(echo today is $(date "+%Y-%m-%d"))` Linux Shell today is 2017-11-07 `` $() [root@localhost ~]# echo Linux $(echo Shell $(echo today is $(date "+%Y-%m-%d"))) Linux Shell today is 2017-11-07 # $()

  
2.  ${} 변수 교체, ${} 에 도 있 습 니 다.   #*,##*,#*,##*,% *,%% *
일반적으로 $var 는 ${var} 과 다 르 지 않 지만 ${} 을 사용 하면 변수 이름 의 범 위 를 정확하게 정의 할 수 있 습 니 다.
  exp 1
[root@localhost ~]# A=Linux
[root@localhost ~]# echo $AB    #    AB

[root@localhost ~]# echo ${A}B    #    A    B
LinuxB

변수 부분 캡 처
file=/dir1/dir2/dir3/my.file.txt
   ${ }          :
${file#*/}:         /         :dir1/dir2/dir3/my.file.txt
${file##*/}:        /          :my.file.txt
${file#*.}:          .          :file.txt
${file##*.}:         .          :txt
${file%/*}:            /          :/dir1/dir2/dir3
${file%%/*}:       /          :(  )
${file%.*}:            .          :/dir1/dir2/dir3/my.file
${file%%.*}:        .           :/dir1/dir2/dir3/my
      :
#       (   #  $    )
%     (   %  $    )
         ;         

하위 문자열 및 교체
                                                                        
${file:0:5}                      5                    /dir1
${file:5:5}                   5          5             /dir2
${file/dir/path}                 dir     path              /path1/dir2/dir3/my.file.txt
${file//dir/path}            dir     path               /path1/path2/path3/my.file.txt
${#file}                                         27                            

 
3.  $(( ))  되다 정수 연산, 진 변환, 변수 값 재 정의
bash 에서 정수 연산 기호
기호.
기능.
+ - */
각각 더하기, 빼 기, 곱 하기, 나 누 기 이다.
%
나머지 연산
& | ^ !
AND, OR, XOR, NOT
[root@localhost ~]# echo $((2*3))
6
[root@localhost ~]# a=5;b=7;c=2
[root@localhost ~]# echo $((a+b*c))
19
[root@localhost ~]# echo $(($a+$b*$c))
19

 
$() 는 다른 진 을 10 진수 로 바 꾸 어 표시 할 수 있 습 니 다.용법 은 다음 과 같다. echo $((N#xx)) 그 중에서 N 은 진법 이 고 xx 는 이 진법 의 다음 수치 이 며 명령 이 실 행 된 후에 이 진수 가 10 진법 으로 전 환 된 후의 값 을 얻 을 수 있다.
[root@localhost ~]# echo $((2#110))
6
[root@localhost ~]# echo $((16#2a))
42
[root@localhost ~]# echo $((8#11))
9

 
(() 변 수 를 다시 정의 합 니 다. [] 수학 식 의 강화 판 입 니 다.
[root@localhost ~]# a=5;b=7
[root@localhost ~]# ((a++))
[root@localhost ~]# echo $a
6
[root@localhost ~]# ((a--));echo $a
5
[root@localhost ~]# ((aecho $?
0
[root@localhost ~]# ((a>b));echo $?
1

 
 
  [[]]  문자열 식 강화 판 입 니 다.

좋은 웹페이지 즐겨찾기