>  기사  >  운영 및 유지보수  >  쉘 스크립트는 어떻게 사용해야 합니까?

쉘 스크립트는 어떻게 사용해야 합니까?

PHP中文网
PHP中文网원래의
2017-06-21 14:17:353674검색

Shell 스크립트는 Shell의 명령 해석 기능을 사용하여 일반 텍스트 파일을 구문 분석한 후 이러한 기능을 실행합니다. Shell 스크립트는 일련의 명령 모음이라고 할 수도 있습니다.
Shell은 win/Unix/Linux에서 직접 사용할 수 있으며, 수많은 내부 시스템 기능을 호출하여 프로그램을 해석하고 실행할 수 있습니다. Shell 스크립트에 능숙하다면 컴퓨터를 조작하고 저장하는 것이 더 쉬워질 것입니다. 많은 시간.

Shell 애플리케이션 시나리오

Shell이 ​​할 수 있는 작업

  • 일부 복잡한 명령을 단순화합니다(일반적으로 github 코드를 제출하려면 여러 단계가 필요할 수 있지만 Shell을 사용하면 한 단계로 단순화할 수 있습니다)

  • 할 수 있습니다 write some 스크립트는 프로젝트의 최신 SDK(라이브러리) 자동 교체를 자동으로 실현합니다

  • 자동 패키징, 컴파일, 퍼블리싱 및 기타 기능

  • 디스크의 빈 폴더 정리

  • 요컨대, 일반 라이브 스크립트를 사용해 볼 수 있습니다

Shell이 ​​할 수 없는 작업

  • 정확한 계산이 필요한 경우

  • 언어 효율성이 필요한 경우

  • 일부 네트워크 작업이 필요한 경우

  • 요약 , Shell은 스크립트를 빠르게 개발할 수 있으며 개발 프로세스를 단순화하고 고급 언어를 대체하는 데 사용할 수 없습니다. ​​


Shell 작동 방식

Shell은 컴파일할 필요가 없기 때문에 스크립트 언어라고 할 수 있지만, 컴파일 및 실행에는 기존 언어보다 더 많은 해석 프로세스가 필요하므로 기존 직접 컴파일 언어보다 효율성이 약간 떨어집니다.


가장 간단한 스크립트:

#!/bin/bashecho "Hello World"

텍스트 편집 도구를 열고 위와 같이 편집한 다음 test.sh로 저장하면 됩니다.

스크립트 실행:

1. cd 到该目录下2. chmod +x ./test.sh  #给脚本权限3. ./test.sh  #执行脚本

렌더링 1

이렇게 해서 우리는 처음이자 가장 간단한 스크립트를 작성했습니다. 이제 몇 가지 복잡한 스크립트를 작성해 볼 수 있습니다.


Variables in Shell

myText="hello world"muNum=100

여기서 주목해야 할 점은 "=" 앞뒤에 공백이 있어서는 안 되며 명명 규칙은 다른 언어와 동일하다는 것입니다.

변수에 액세스

myText="hello world"muNum=100echo $myTextecho muNum

변수에 액세스하려면 $를 사용해야 합니다. 그렇지 않으면 아래 그림과 같이 출력이 일반 텍스트 콘텐츠가 됩니다.


렌더링 2

쉘의 4가지 산술 연산

예제 프로그램

#!/bin/bashecho "Hello World !"a=3b=5val=`expr $a + $b`echo "Total value : $val"val=`expr $a - $b`echo "Total value : $val"val=`expr $a \* $b`echo "Total value : $val"val=`expr $a / $b`echo "Total value : $val"

여기서 주의할 점은 변수를 정의할 때 "=" 앞뒤에 공백이 있어서는 안 된다는 점입니다. 단, 사칙연산을 4번 수행할 때에는 연산 기호 앞뒤에 공백이 있어야 하며, 곱셈을 수행할 때 이스케이프 처리해야 합니다.


Rendering 3.png

다른 연산자 =, ==, !=,! , -o, -a

예제 프로그램

a=3b=5val=`expr $a / $b`echo "Total value : $val"val=`expr $a % $b`echo "Total value : $val"if [ $a == $b ]then
   echo "a is equal to b"fiif [ $a != $b ]then
   echo "a is not equal to b"fi

Rendering 4

관계 연산자

#!/bin /sh 예제 프로그램

a=10b=20if [ $a -eq $b ]then
   echo "true"else
   echo "false"fiif [ $a -ne $b ]then
   echo "true"else
   echo "false"fiif [ $a -gt $b ]then
   echo "true"else
   echo "false"fiif [ $a -lt $b ]then
   echo "true"else
   echo "false"fiif [ $a -ge $b ]then
   echo "true"else
   echo "false"fiif [ $a -le $b ]then
   echo "true"else
   echo "false"fi

렌더링 5

字符串运算符





字符串

#!/bin/shmtext="hello"  #定义字符串
mtext2="world"mtext3=$mtext" "$mtext2  #字符串的拼接echo $mtext3  #输出字符串echo ${#mtext3}  #输出字符串长度echo ${mtext3:1:4}  #截取字符串

效果图6

数组

#!/bin/sharray=(1 2 3 4 5)  #定义数组
array2=(aa bb cc dd ee)  #定义数组
value=${array[3]}  #找到某一个下标的数,然后赋值echo $value  #打印
value2=${array2[3]}  #找到某一个下标的数,然后赋值echo $value2  #打印
length=${#array[*]}  #获取数组长度echo $length

效果图7

输出程序

echo

#!/bin/shecho "hello world"  echo hello world  

text="hello world"echo $textecho -e "hello \nworld"  #输出并且换行echo "hello world" > a.txt  #重定向到文件echo `date`  #输出当前系统时间

效果图8

printf

同c语言,就不过多介绍了


判断语句

  • if

  • if-else

  • if-elseIf

  • case

#!/bin/sha=10b=20if [ $a == $b ]then
   echo "true"fiif [ $a == $b ]then
   echo "true"else
   echo "false"fiif [ $a == $b ]then
   echo "a is equal to b"elif [ $a -gt $b ]then
   echo "a is greater than b"elif [ $a -lt $b ]then
   echo "a is less than b"else
   echo "None of the condition met"fi
效果图9

test命令

test $[num1] -eq $[num2]  #判断两个变量是否相等
test num1=num2  #判断两个数字是否相等

 

for循环
#!/bin/shfor i in {1..5}doecho $idonefor i in 5 6 7 8 9doecho $idonefor FILE in $HOME/.bash*do
   echo $FILEdone
<code class="bash"><span class="hljs-meta"><br/><img src="https://img.php.cn/upload/article/000/000/001/e287dce1bca30a9896dc8bd2ecb0e156-15.png" alt=""/></span></code>
效果10

while循环

#!/bin/shCOUNTER=0while [ $COUNTER -lt 5 ]doCOUNTER=`expr $COUNTER + 1`echo $COUNTERdoneecho '请输入。。。'echo 'ctrl + d 即可停止该程序'while read FILMdoecho "Yeah! great film the $FILM"done

以上是while循环的两种用法,第一种是比较常规的,执行循环,然后每次都把控制的数加1,就可以让while循环有退出的条件了。

第二种是用户从键盘数据,然后把用户输入的文字输出出来。


跳出循环

break  #跳出所有循环
break n  #跳出第n层f循环
continue  #跳出当前循环

 

函数

#!/bin/shsysout(){echo "hello world"}

sysout

定义一个没有返回值的函数,然后调用该函数

#!/bin/shtest(){

    aNum=3anotherNum=5return $(($aNum+$anotherNum))
}
test
result=$?echo $result

定义一个有返回值的函数,调用该函数,输出结果


效果图11
#!/bin/shtest(){echo $1  #接收第一个参数echo $2  #接收第二个参数echo $3  #接收第三个参数echo $#  #接收到参数的个数echo $*  #接收到的所有参数
}

test aa bb cc

定义了一个需要传递参数的函数


效果图12

重定向

$echo result > file  #将结果写入文件,结果不会在控制台展示,而是在文件中,覆盖写
$echo result >> file  #将结果写入文件,结果不会在控制台展示,而是在文件中,追加写echo input < file  #获取输入流

 


写一个自动输入命令的脚本

自动提交github仓库的脚本

#!/bin/bashecho "-------Begin-------"git add .
git commit -m $1echo $1git push origin masterecho "--------End--------"

 


效果图13

以上便是我对shell知识的总结,欢迎大家点心,评论,一起讨论~~

 脚本程序

위 내용은 쉘 스크립트는 어떻게 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.