day 43 셸 프로 그래 밍 기초
#!/bin/bash //#! 幻数 指定脚本用的命令解释器
#加脚本内容
执行脚本的方法:
sh
sh -x
2. 변수
정의 ip = 10..0.201 편의 스 크 립 트 에서 중복 사용 하기 시작 합 니 다.
1) 명명 규칙
변수 이름 식별 변수 역할 을 볼 때 숫자 로 시작 할 수 없습니다. 2) 따옴표
单引号:所见即所得
双引号:可以解析特殊符号 如:`` $() $ !
不加引号:与双引号类似 支持通配符 * {} ? [] [^]
反引号:优先执行 引号里面为命令
변 수 를 정의 할 때 변수 에 빈 칸 이 있 으 면 따옴표 를 사용 해 야 합 니 다.
3) 변수 분류 (1) 부분 변수 (일반 변수)
IP=10.0.0.200
time=2019-5-30
取变量内容
echo $weekday echo ${week}day
예 1: 부분 변수 정의 와 사용:
[root@m01 scripts]# date=7
[root@m01 scripts]# echo $dateday
[root@m01 scripts]# echo $(date)day
Thu May 30 09:01:11 CST 2019day
[root@m01 scripts]# echo ${date}day
7day
(2) 전역 변수 (환경 변수)
시스템 생 성
PATH
PS1
LANG
export 에 정 의 된 변 수 를 추가 합 니 다.
unset + 변수 이름
(3) 부분 변수 VS 전역 변수 source (4) 특수 변수
$?
上一条命令的返回值
0 正确
非0 有问题
$数字
$1 $3
$0
$#
命令行参数的个数
判断参数的个数
$*
脚本的所有参数
예 2: $1 $2 $3 $0 의 용법:
[root@m01 scripts]# cat show.sh
#!/bin/bash
echo $1 $2 $3 $0
[root@m01 scripts]# echo show.sh oldboy lidao oldgirl alex
show.sh oldboy lidao oldgirl alex
예 3: 변수의 응용
[root@m01 /server/scripts]# x=10
[root@m01 /server/scripts]# y=99
[root@m01 /server/scripts]# awk 'BEGIN{print $x/$y}'
awk: cmd. line:1: fatal: division by zero attempted
[root@m01 /server/scripts]# awk 'BEGIN{print x,y}'
[root@m01 /server/scripts]# awk -vn1=10 -vn2=99 'BEGIN{print n1/n2}'
0.10101
[root@m01 /server/scripts]# awk -vn1=$x -vn2=$y 'BEGIN{print n1/n2}'
0.10101
3. 판단
(1) 특수 기호
&& 前一个命令执行成功 执行后面的命令
|| 前一个命令没有执行成功 执行后面的命令
(2) [] 조건 식
괄호 안에 두 개의 빈 칸
文件目录
[ -d /tmp/old ]
判断目录是否存在
-f 文件
比大小
单词
-eq ==
equal 等于
-ne !=
not equal 不等于
-gt >
great than
-ge >=
great equal
-lt <
less than 小于
-le <=
less equal
(3) if 조건 판단 단순 형식
예 4: if 조건문:
[root@m01 scripts]# cat cal_v1.sh
#!/bin/bash
x=$1
y=$2
if [ $# -lt 2 ];then
echo "Usage: sh $0 num1 num2"
else
awk -vn1=$x -vn2=$y 'BEGIN{print n1+n2}'
awk -vn1=$x -vn2=$y 'BEGIN{print n1-n2}'
awk -vn1=$x -vn2=$y 'BEGIN{print n1*n2}'
awk -vn1=$x -vn2=$y 'BEGIN{print n1/n2}'
fi
[root@m01 scripts]# sh cal_v1.sh 3
Usage: sh cal_v1.sh num1 num2
[root@m01 scripts]# sh cal_v1.sh 3 4
7
-1
12
0.75
(4) for circle
(5) 생산 사례: 정시 작업 의 실행 여 부 를 판단 해 야 합 니 다. 예: 정시 작업 의 실행 여 부 를 확인 합 니 다.
[root@m01 scripts]# cat cron.sh
#!/bin/bash
count=$(ps -ef |grep -c crond )
if [ $count -ge 2 ];then
echo 'crond running'
else
echo 'crond stop'
fi
[root@m01 scripts]# systemctl stop crond
[root@m01 scripts]# sh cron.sh
crond stop
[root@m01 scripts]# systemctl start crond
[root@m01 scripts]# sh cron.sh
crond running
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.