셸 스 크 립 트 변수 특수 문자 의 의미

3527 단어 shell
1. 셸 스 크 립 트 변수 $\#, $*, $, $@, $0, $1, $2, $?의미
매개 변수 설명
1: $\# 스 크 립 트 가 들 어 오 는 매개 변 수 를 표시 합 니 다.
2:$*  실행 스 크 립 트 전송 매개 변수 목록 표시
3: $$프로 세 스 id 표시
4: $@ 은 스 크 립 트 를 실행 하여 모든 인 자 를 전달 하 는 것 을 표시 합 니 다.
5: $0 은 실행 스 크 립 트 이름 을 표시 합 니 다.
6: $1 은 첫 번 째 매개 변 수 를 표시 합 니 다.
7: $2 는 두 번 째 매개 변 수 를 표시 합 니 다.
8:$? 스 크 립 트 실행 상태 0 정상, 기타 오류 표시
실험 및 결과
#!/bin/shecho "parm number is : $#"echo "parm list   is : $*"echo "all parm is : $@"
echo "process is : $$"
echo "file name is : $0"echo "the first parm is : $1"echo "stat is : $?"
집행 및 결과
실행: sh shellTest. sh "the first parm""the second parm"
parm number is : 2parm list   is : the first parm  the second parmall parm is : the first parm  the second parmprocess is : 28669file name is : shellTest.shthe first parm is : the first parm stat is : 0
2. $@ 과 $* 의 차이
셸 스 크 립 트 파일 작성
셸 에서 $@ 과 $* 는 명령 행 의 모든 매개 변수 ($0 포함 되 지 않 음) 를 표시 하지만 $* 는 명령 행 의 모든 매개 변 수 를 하나의 전체 로 보고 $@ 은 각 매개 변 수 를 구분 합 니 다.
eg:
for i in "$@"
do
   echo $i   #$\# 회 순환 을 경험 합 니 다
done
for i in "$*"
do
   echo $i  #한 번 만 순환 합 니 다. $* 따옴표 가 없 으 면 $\# 번 순환 합 니 다.
done
2. 명령 줄 에 입력 sh tt6.sh 1 2 3 4 5 6 7
이때 의 운행 결 과 는 12345671, 2, 3, 4, 5, 6, 7.
3. Shell 의 ${},\# 와%% 사용 범례
만약 에 우리 가 변 수 를 정의 했다 면:
 
   
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 - my. file. txt}: $file 이 설정 되 어 있 지 않 으 면 my. file. txt 를 전송 값 으로 사용 합 니 다.(빈 값 및 빈 값 이 아 닐 때 처리 하지 않 음) ${file: - my. file. txt}: $file 이 설정 되 지 않 거나 빈 값 이 라면 my. file. txt 를 사용 하여 전송 값 을 사용 합 니 다.(비어 있 지 않 을 때 처리 하지 않 음) ${file + my. file. txt}: $file 이 비어 있 거나 비어 있 지 않 으 면 my. file. txt 를 전송 값 으로 사용 합 니 다.(설정 되 지 않 았 을 때 처리 하지 않 음) ${file: + my. file. txt}: $file 이 비어 있 지 않 으 면 my. file. txt 를 전송 값 으로 사용 합 니 다.(빈 값 을 설정 하지 않 았 을 때 처리 하지 않 음) ${file = my. file. txt}: $file 이 설정 되 어 있 지 않 으 면 my. file. txt 를 전송 값 으로 하고 $file 을 my. file. txt 로 할당 합 니 다.(빈 값 및 비어 있 지 않 을 때 처리 하지 않 음) ${file: = my. file. txt}: $file 이 설정 되 지 않 았 거나 비어 있 지 않 으 면 my. file. txt 를 전송 값 으로 하고 $file 을 my. file. txt 로 할당 합 니 다.(빈 값 이 아 닐 때 처리 하지 않 음) ${file? my. file. txt}: $file 이 설정 되 어 있 지 않 으 면 my. file. txt 를 stdERR 로 출력 합 니 다.(빈 값 및 비 빈 값 시 처리 하지 않 음)
${file:? my. file. txt}: $file 이 설정 되 지 않 았 거나 비어 있 으 면 my. file. txt 를 stdERR 로 출력 합 니 다.(빈 값 이 아 닐 때 처리 하지 않 음) ${\# var} 변수 값 의 길 이 를 계산 할 수 있 습 니 다:
${\# file} 27 을 얻 을 수 있 습 니 다./dir 1/dir 2/dir 3/my. file. txt 는 27 바이트 이기 때 문 입 니 다.

좋은 웹페이지 즐겨찾기