쉘 용량
변수를 정의할 때 다음과 같이 변수 이름에 달러 기호($, PHP 언어의 변수에 필요함)를 추가하지 마세요.
your_name="php.cn"
변수 이름과 등호 사이에 공백이 있어서는 안 됩니다. 이는 여러분이 익숙한 모든 프로그래밍 언어와 다를 수 있습니다. 동시에 변수 이름의 명명은 다음 규칙을 따라야 합니다.
첫 번째 문자는 문자(a-z, A-Z)여야 합니다.
중간에 공백이 있어서는 안 되며, 밑줄(_)을 사용할 수 있습니다.
구두점은 사용할 수 없습니다.
Bash의 키워드는 사용할 수 없습니다(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
스킬 변수에 중괄호를 추가하지 않고 echo "I am good at $skillScript"라고 쓰면 인터프리터가 $skillScript를 처리하게 됩니다. SkillScript를 변수로 사용하면(값이 비어 있음) 코드 실행 결과가 예상한 것과 다릅니다.
모든 변수에 중괄호를 추가하는 것이 좋습니다. 이는 좋은 프로그래밍 습관입니다.
정의된 변수는 다음과 같이 재정의될 수 있습니다.
your_name="tom" echo $your_name your_name="alibaba" echo $your_name
이렇게 작성하는 것은 합법적이지만 두 번째로 값을 할당할 때는 $your_name="alibaba"라고 쓸 수 없습니다. 사용할 때는 달러 기호만 추가하세요. 변수($).
읽기 전용 변수
변수를 읽기 전용 변수로 정의하려면 readonly 명령을 사용하세요. 읽기 전용 변수의 값은 변경할 수 없습니다.
다음 예에서는 읽기 전용 변수를 변경하려고 시도하며 결과는 오류입니다.
#!/bin/bash myUrl="http://www.w3cschool.cc" readonly myUrl myUrl="http://www.php.cn"
스크립트를 실행하면 결과는 다음과 같습니다.
/bin/sh: NAME: This variable is read only.
변수 삭제
unset 명령을 사용하여 변수를 삭제합니다. 구문:
unset variable_name
변수는 삭제된 후에는 다시 사용할 수 없습니다. unset 명령은 읽기 전용 변수를 삭제할 수 없습니다.
Example
#!/bin/sh myUrl="http://www.php.cn" unset myUrl echo $myUrl
위 예제를 실행하면 출력이 되지 않습니다.
변수 유형
셸을 실행할 때 세 가지 변수가 동시에 존재합니다.
1) 로컬 변수로컬 변수는 스크립트나 명령에 정의되며 현재 시작된 셸 인스턴스에서만 유효합니다. 다른 쉘에서는 지역 변수에 액세스할 수 없습니다.
2) 환경 변수쉘에 의해 시작된 프로그램을 포함한 모든 프로그램은 환경 변수에 접근할 수 있습니다. 일부 프로그램은 정상적인 작동을 위해 환경 변수가 필요합니다. 쉘 스크립트는 필요할 때 환경 변수를 정의할 수도 있습니다.
3) 쉘 변수쉘 변수는 쉘 프로그램에 의해 설정되는 특수 변수입니다. 쉘 변수 중 일부는 환경 변수이고 일부는 로컬 변수입니다. 이러한 변수는 쉘의 정상적인 작동을 보장합니다
Shell String
String은 쉘 프로그래밍에서 가장 일반적으로 사용되는 유용한 데이터 유형입니다(숫자 및 문자열을 제외하고 사용하기 쉬운 다른 유형은 없습니다). , 또는 따옴표가 없습니다. 작은따옴표와 큰따옴표의 차이점은 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
하위 문자열 추출
다음 예에서는 문자열의
2문자에서 시작하는
4 문자를 가로챕니다. string="php is a great site"
echo ${string:1:4} # 输出 unoo
Find substring문자 "
또는
s" 위치 찾기: string="php is a great company"
echo `expr index "$string" is` # 输出 8
참고: 위 스크립트의 "`"는 작은따옴표 "'"가 아니라 백틱입니다. 읽지 마세요. 틀렸어.
Shell Array
bash는 1차원 배열을 지원하며(다차원 배열은 지원하지 않음) 배열 크기를 제한하지 않습니다.C 언어와 유사하게 배열 요소의 첨자는 0부터 시작하여 번호가 매겨집니다. 배열의 요소를 얻으려면 아래 첨자를 사용하십시오. 아래 첨자는 정수 또는 산술 표현식일 수 있으며 해당 값은 0보다 크거나 같아야 합니다.
배열 정의
Shell에서 대괄호는 배열을 나타내는 데 사용되며 배열 요소는 "공백" 기호로 구분됩니다. 배열 정의의 일반적인 형식은 다음과 같습니다.
数组名=(值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[@]}
길이 가져오기 the array
배열 길이 가져오기 방법은 문자열 길이를 가져오는 방법과 동일합니다. 예:
# 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得数组单个元素的长度 lengthn=${#array_name[n]}Shell Comments "#"으로 시작하는 줄은 주석이며 해석기에서 무시됩니다. .
sh에는 여러 줄 주석이 없으며 각 줄에 # 기호만 추가할 수 있습니다.
#-------------------------------------------- # 这是一个注释 # author:php中文网 # site:www.php.cn # slogan: php中文网 #-------------------------------------------- ##### 用户配置区 开始 ##### # # # 这里可以添加脚本描述信息 # # ##### 用户配置区 结束 #####
개발 과정에서 일시적으로 주석을 달고 잠시 후 주석을 제거해야 하는 큰 코드 섹션을 발견하면 어떻게 해야 합니까?
각 줄에 # 기호를 추가하는 것은 너무 번거롭습니다. 주석 처리할 코드를 중괄호로 묶어 함수로 정의하면 됩니다. 이를 통해 주석은 동일한 효과를 갖습니다.