2. 당신이 필요로하는 특별한 쉘 문자가 여기에 있습니다!

  목차

1. 쉘 특수 문자

1.1 $ N 

1.2 $ #

1.3 달러 *

1.5 달러?

1.6 달러

1.7 $!

1.8 $-

둘째, 요약


쉘 스크립트를 작성할 때 일반적으로 $ ?, $ @ 등과 같은 일부 특수 문자가 사용됩니다.이 기사에서는 모든 쉘 특수 문자를 예제와 함께 소개합니다. 먼저 수집하는 것이 좋습니다!

1. 쉘 특수 문자

1.1 $ N 

N은 숫자를 나타냅니다. 여기서 $ 0은 현재 스크립트 파일 이름을 나타내고 $ N (N> 0)은 아래와 같이 스크립트에 입력 된 N 번째 입력 매개 변수를 나타냅니다.

[root@localhost ~]# cat shell.sh
#!/bin/bash

echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}

[root@localhost ~]# ./shell.sh 1 2 3 4 5 6 7 8 9 10
./shell.sh 1 2 3 4 5 6 7 8 9 10
[root@localhost ~]#

참고 : $ 0 출력은 ./shell.sh입니다.

1.2 $ #

스크립트 또는 함수에 전달되는 매개 변수의 수는 다음과 같습니다.

[root@localhost ~]# cat shell.sh
#!/bin/bash

echo $#
[root@localhost ~]# ./shell.sh 1 2 3
3
[root@localhost ~]#
[root@localhost ~]# cat shell.sh 
#!/bin/bash

funcTest() {
    echo $#
}

funcTest 1 2 3 4
[root@localhost ~]# ./shell.sh 
4
[root@localhost ~]# 

1.3 달러 *

 아래와 같이 스크립트 또는 함수에 전달 된 모든 매개 변수를 나타냅니다.

[root@localhost ~]# cat shell.sh 
#!/bin/bash

echo $*
[root@localhost ~]# ./shell.sh 1 2 3 4 5
1 2 3 4 5
[root@localhost ~]#
[root@localhost ~]# cat shell.sh 
#!/bin/bash

funcTest() {
    echo $*
}

funcTest 1 2 3 4
[root@localhost ~]# ./shell.sh 
1 2 3 4
[root@localhost ~]#

1.4 $ @

아래와 같이 스크립트 또는 함수에 전달 된 모든 매개 변수를 나타냅니다.

[root@localhost ~]# cat shell.sh 
#!/bin/bash

echo $@
[root@localhost ~]# ./shell.sh 1 2 3 4 5
1 2 3 4 5
[root@localhost ~]#
[root@localhost ~]# cat shell.sh 
#!/bin/bash

funcTest() {
    echo $@
}

funcTest 1 2 3 4
[root@localhost ~]# ./shell.sh 
1 2 3 4
[root@localhost ~]#

 $ @$ * 의 차이점 :

  • 큰 따옴표로 묶지 않으면 두 기호는 동일하며 둘 다 $ 1 $ 2 $ 3 ...... 분리 된 형식으로 출력됩니다.
  • 큰 따옴표로 묶인 경우 $ *는 모든 매개 변수를 전체적으로 출력합니다 (예 : "$ 1 $ 2 $ 3 ……"). $ @는 각 매개 변수를 구분합니다. 예 : $ 1 $ 2 $ 3 ……;

예를 들어 보겠습니다.

먼저 아래와 같이 동일한 상황을 살펴보십시오.

[root@localhost ~]# cat shell.sh 
#!/bin/bash

echo "\$*"
for i in $*
do
    echo $i
done

echo "\$@"
for i in $@
do
    echo $i
done
[root@localhost ~]# ./shell.sh 1 2 3 4 5
$*
1
2
3
4
5
$@
1
2
3
4
5
[root@localhost ~]#

아래와 같이 차이점을 확인하십시오.

[root@localhost ~]# cat shell.sh 
#!/bin/bash

echo "\$*"
for i in "$*"
do
    echo $i
done

echo "\$@"
for i in "$@"
do
    echo $i
done
[root@localhost ~]# ./shell.sh 1 2 3 4 5
$*
1 2 3 4 5
$@
1
2
3
4
5
[root@localhost ~]# 

위의 예에서 큰 따옴표로 묶인 $ *에 포함 된 모든 매개 변수는 전체로 간주되고 "1 2 3 4 5"가 직접 출력되며 $ @의 매개 변수는 여전히 분리됩니다.

1.5 달러?

아래와 같이 이전 명령의 종료 상태 또는 함수의 반환 값을 나타냅니다.

[root@localhost ~]# cat shell.sh 
#!/bin/bash

pwd
echo $?

ls -l /root/abc
echo $?
[root@localhost ~]# ./shell.sh 
/root
0
ls: 无法访问/root/abc: 没有那个文件或目录
2
[root@localhost ~]#

첫 번째 $?의 값은 0으로 pwd 명령이 성공적으로 실행되었음을 나타내고 두 번째 $?의 값은 2로 마지막 명령 ls가 실행에 실패했음을 나타냅니다.

[root@localhost ~]# cat shell.sh 
#!/bin/bash

funcTest(){
    return 6
}

funcTest
echo $?
[root@localhost ~]# ./shell.sh 
6
[root@localhost ~]#
[root@localhost ~]# cat shell.sh 
#!/bin/bash

funcTest(){
    echo "abc"
}

val=$(funcTest)
echo $?
[root@localhost ~]# ./shell.sh 
0
[root@localhost ~]#

함수에 $?를 사용할 때 return 문이 있으면 return 문에서 반환 한 값을 가져 오며 범위는 0 ~ 255입니다. return 문이없는 경우 $?의 값은 함수에서 실행 된 마지막 명령의 반환 코드를 나타냅니다.

1.6 달러

아래와 같이 스크립트의 현재 프로세스 ID 번호를 나타냅니다. 

[root@localhost ~]# cat shell.sh 
#!/bin/bash

echo $$
[root@localhost ~]# ./shell.sh 
26033
[root@localhost ~]# 

1.7 $!

나타냅니다 의 ID 번호를 마지막으로 실행 에서 처리 배경을 , 또한 반드시 완료되지 않습니다 가장 최근에 실행중인 프로세스의 ID 번호로 이해 될 수있다.

[root@localhost ~]# top &
[2] 31702
[root@localhost ~]# echo $!
31702

[2]+  已停止               top
[root@localhost ~]#

1.8 $-

아래와 같이 set 명령과 동일한 기능을하는 Shell 명령에서 사용하는 현재 옵션을 표시합니다.

[root@localhost ~]# cat shell.sh 
#!/bin/bash

set -m
echo $-

set -C
echo $-
[root@localhost ~]# ./shell.sh 
hmB
hmBC
[root@localhost ~]#

 참고 : 두 번째 출력에서는 방금 설정 한 매개 변수 C가 추가됩니다.

둘째, 요약

글쎄요, 예제와 결합 된 Shell 특수 문자에 대한 설명이 끝났습니다. 기분이 좋으면 원 클릭 트리플 연결 만하세요. 궁금한 점이 있으면 댓글란에 메시지를 남겨주세요 ~

추천

출처blog.csdn.net/u011074149/article/details/112797011