Latest web development tutorials

셸? 변수

쉘 변수

당신은 같은 달러 기호 ($, 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:学的不仅是技术,更是梦想!
#--------------------------------------------
##### 用户配置区 开始 #####
#
#
# 这里可以添加脚本描述信息
# 
#
##### 用户配置区 结束  #####

개발 프로세스 경우, 코드의 큰 덩어리가 일시적으로 잠시 및 주석 후에 언급 할 필요가 발생, 그것을 어떻게 할까?

각 행은 함수로 정의 중괄호 한 쌍의 주석이 될 몇 가지 코드를 넣을 수 있습니다, 너무 힘든 # 기호를 추가 곳이 함수를 호출하지 않으려면,이 코드가 실행 및 주석으로 도달 할 수없는 것 효과.