셸? 변수
쉘 변수
당신은 같은 달러 기호 ($, PHP 언어 변수가 필요)없이 변수, 변수 이름을 정의 할 때 :
your_name="w3big.com"
거기에 당신과 모든 프로그래밍 언어에 익숙 할 수있는 변수 이름과 등호 사이에 공간이없는 동일하지 않습니다. 한편, 변수 이름이 명명 규칙을 따라야합니다 :
- 첫 번째 문자는 문자 (AZ, AZ)를해야합니다.
- 공백은 밑줄 (_)을 사용하지 않습니다.
- 당신은 문장 부호를 사용할 수 없습니다.
- 당신은 (가능한 예약 된 키워드를 보려면 help 명령) 키워드에 떠들썩한 파티를 사용할 수 없습니다.
또한 명시 적으로 직접 할당, 당신은 또한 다음과 같은 문장으로 변수에 값을 할당 할 수 있습니다합니다 :
for file in `ls /etc`
위의 문장 순환 중 파일 이름이 / etc 디렉토리.
변수 사용
이런 식으로, 달러 기호 앞에 변수 이름만큼, 정의 된 변수를 사용 :
your_name="qinjx" echo $your_name echo ${your_name}
중괄호는 선택, 플러스 모든 권리없이, 예를 들면 다음과 같은 경우와 경계 식별 변수를 설명하기위한 중괄호를 추가 외부 변수 이름 :
for skill in Ada Coffe Action Java; do echo "I am good at ${skill}Script" done
당신은 "나는 $ skillScript 좋은 생각"에코 작성 스킬 변수 플러스 중괄호를 제공하지 않는 경우, 인터프리터, 코드 실행 우리가 다시 같은 예상 결과 없습니다 (그 값이 비어있는) 변수로 $ skillScript을 넣어 것입니다.
모든 변수 중괄호에게, 좋은 프로그래밍 방법입니다.
정의 된 변수를 다시 정의 할 수 있고, 예를 들면 :
your_name="tom" echo $your_name your_name="alibaba" echo $your_name
쓰기는 합법적이지만, 두 번째 할당이 $ your_name군요 = "알리바바"를 쓸 수없는 경우가 달러 기호 ($)에 추가 될 때, 변수를 사용하는 것이 있습니다.
읽기 전용 변수
읽기 전용 변수를 읽기 전용 변수를 읽기 전용 변수는 변경 될 수없는 값으로 정의 될 수있는 명령을 사용한다.
다음 예는, 결과가 주어지고 읽기 전용 변수를 변경하려고하면
#!/bin/bash myUrl="http://www.w3cschool.cc" readonly myUrl myUrl="http://www.w3big.com"
다음과 같은 결과로 스크립트를 실행합니다 :
/bin/sh: NAME: This variable is read only.
변수를 제거
변수를 삭제하려면 해제 명령을 사용하십시오. 구문 :
unset variable_name
변수가 제거 된 후 다시 사용할 수 없습니다. 해제 명령은 읽기 전용 변수를 제거 할 수 없습니다.
예
#!/bin/sh myUrl="http://www.w3big.com" unset myUrl echo $myUrl
위의 구현의 예는 더 출력이 없습니다.
변수 유형
당신이 쉘을 실행하면, 동시에 세 개의 매개 변수가있을 것입니다 :
- 1) 스크립트 또는 명령에 정의 된 지역 변수 지역 변수는 현재 쉘 인스턴스에서 다른 쉘 시작 프로그램이 지역 변수에 액세스 할 수없는 경우에만 유효합니다.
- 2) 쉘 프로그램을 포함하는 모든 프로그램이 시작 환경 변수, 환경 변수를 액세스 할 수있는 일부 응용 프로그램은 정상 작동을 위해 환경 변수를 필요로한다. 필요한 경우, 쉘 스크립트는 환경 변수를 정의 할 수 있습니다.
- 3) 쉘 변수는 변수가 쉘 프로그램에 의해 설정된 특별한 변수 껍질. 환경 변수의 변수 부분을 쉘 일부는 셀의 정상 동작을 보장하기 위해 로컬 변수는
쉘 문자열
문자열 쉘 프로그래밍은 가장 일반적이고 유용한 데이터 형식이다 (숫자와 문자열을 제외하고, 또한 편리 다른 유형의 부족), 문자열은 작은 따옴표로 묶어야 수, 따옴표도 사용할 수 있습니다, 또는 인용 부호로하지 않을 수 있습니다. PHP와 단일 및 이중 인용 부호의 차이는 비슷합니다.
작은 따옴표
str='this is a string'
단일 인용 문자열 제한 :
- 작은 따옴표의 모든 문자가 문자열 변수에 따옴표로 출력이 유효하다;
- 단일 인용 문자열은 작은 따옴표로 표시 (이스케이프 문자도 후 작은 따옴표를 사용) 할 수 없습니다.
큰 따옴표
your_name='qinjx' str="Hello, I know your are \"$your_name\"! \n"
더블 장점을 인용 :
- 큰 따옴표는 변수를 가질 수 있습니다
- 큰 따옴표는 이스케이프 문자를 표시 할 수 있습니다
문자열 연결
your_name="qinjx" greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1
문자열 길이를 가져옵니다
string="abcd" echo ${#string} #输出 4
추출 문자열
처음 두 문자 스트링에서 다음 예는 네 개의 문자를 캡처하기 시작 :
string="w3big is a great site" echo ${string:1:4} # 输出 unoo
문자열 찾기
문자 "I 또는의"위치 찾기 :
string="w3big is a great company" echo `expr index "$string" is` # 输出 8
참고 : 위의 스크립트 "`"반 따옴표보다는 작은 따옴표 " '"속지 마십시오, 오.
쉘 배열
배시 일차원 배열 (다차원 배열을 지원하지 않는)를 지원하고, 상기 어레이의 크기를 정의하지 않는다.
C 언어, 0부터 시작 번호 배열 요소의 첨자 유사. 요소들의 어레이는 첨자를 활용 얻는다 첨자는 정수 또는 그 값이 0보다 크거나 같아야 산술 표현 될 수있다.
배열을 정의
셸에서, 배열, 분리 된 "공간"기호 배열 요소를 나타 내기 위해 괄호를 사용합니다. 다음과 같이 배열의 일반적인 형태는 정의된다 :
数组名=(值1 值2 ... 值n)
예를 들면 :
array_name=(value0 value1 value2 value3)
또는
array_name=( value0 value1 value2 value3 )
또한 배열의 각 구성 요소에 대해 개별적으로 정의 할 수 있습니다 :
array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen
사용자는 연속적인 인덱스를 사용할 수없고, 목표 범위 아래에는 제한이 없다.
읽기 배열
일반적인 형식은 배열 요소 값을 읽습니다 :
${数组名[下标]}
예를 들면 :
valuen=${array_name[n]}
같은 모든 요소의 배열을 얻을 수있는 @ 기호를 사용합니다 :
echo ${array_name[@]}
배열의 길이를 가져옵니다
예를 들어, 문자열의 길이의 길이의 배열을 가져 동일한 방법으로 얻을 :
# 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得数组单个元素的长度 lengthn=${#array_name[n]}
쉘 노트
주석의 시작 부분에 "#"와 라인은, 인터프리터에 의해 무시됩니다.
쉬에는 여러 줄의 주석이없는 각 행은 # 기호를 추가 할 수 있습니다. 만이 같은 :
#-------------------------------------------- # 这是一个注释 # author:本教程 # site:www.w3big.com # slogan:学的不仅是技术,更是梦想! #-------------------------------------------- ##### 用户配置区 开始 ##### # # # 这里可以添加脚本描述信息 # # ##### 用户配置区 结束 #####
개발 프로세스 경우, 코드의 큰 덩어리가 일시적으로 잠시 및 주석 후에 언급 할 필요가 발생, 그것을 어떻게 할까?
각 행은 함수로 정의 중괄호 한 쌍의 주석이 될 몇 가지 코드를 넣을 수 있습니다, 너무 힘든 # 기호를 추가 곳이 함수를 호출하지 않으려면,이 코드가 실행 및 주석으로 도달 할 수없는 것 효과.