Linux入门之Shell脚本基础

xiaoxiao2021-02-28  27

Shell基本元素

(1)#! /bin/bash 必须的,指出shell的类型 (2)# 注释 (3)变量 (4)控制     一个shell脚本 vi  mkdir.sh   #!/bin/bash # this is mkdir cd /home mkdir shellTest echo "shellTest  is created."

1.echo命令用于在屏幕上显示消息 使用方式:echo 要显示的内容 2.#用于在shell脚本中进行注释

Shell的一般结构

shell 类型 函数 主过程   一般模板  abc.sh #! /bin/bash                           shell类型 #a simple shell script example #a function sayhello()                函数 {     echo "Enter Your name:"     read name          读取来自键盘输入的变量     echo "Hello $name" } echo "programme starts here..."  主过程 sayhello echo "programme ends."

Shell中的特殊符号

1、注释符#      除了#!/bin/bash里的#特殊 2、美元符 $     变量符。与反斜杠转义符相反,使其后的普通字符作为变量名,如$a表示变量a的值。变量字符长度超过1个时,用{}括起来 3、单引号     被引起的字符全部做普通字符,即全部原样  echo ‘my $SHELL’ 4、双引号     引号内的内容,除$、转义符\、倒引号`这三个保留特殊功能,其他字符均做普通字符。 5、倒引号(数字1键旁边的那个键)     引号内的字符串当做shell命令行解释执行,得到的结果取代整个倒引号括起来的部分。     `pwd`             即pwd命令的执行结果            $LOGNAME        系统变量 区别下面几句:     echo ‘my home is $HOME’     echo “my home is $HOME”     echo  `my home is $HOME`       echo “my home is `pwd`”     echo ‘my home is `pwd`’ 6. 反斜线      反斜线是转义字符,它能把特殊字符变成普通字符。在某个字符前面利用反斜杠(\)能够阻止shell把后面的字符解释为特殊字符。、     echo  “Filename  is  N0\$\`”

变量

创建变量

1、可以在任何时间通过简单的赋值来创建变量 语法:   <variable name>=<value> Shell中的所有变量都被当作字符串   2、引用变量   $符号用于引用一个变量的内容   variable1=${variable2}   3、在执行shell脚本时,shell还允许用户从键盘中输入一个值给变量。可以使用read命令来做。 read fname

 命令替换

 1、在单个命令行中使用多个命令的一个方法是通过命令替换

例:echo "The date is `date`"   2、expr命令:用于求值算术表达式。该命令输出被发送到标准输出 例:expr 4+5  将在屏幕上显示9    3、可以在$((...))中包括一个表达式,用下面的命令来计算它的值:   $((表达式))   实验:编写一个简单的四则计算器   echo "Please enter the first number." read totalqueries echo "Please enter the second number." read answered echo "Please enter the operation." read opt result=$((totalqueries $opt answered)) echo "the result of $totalqueries $opt $answered=$result"

 条件判断命令

test n1 -参数 n2          (或 –参数 表达式) [ n1 -参数 n2 ]     真返回0,假返回1。   参数:     -lt 小于     -le小于等于     -gt  大于     -ge 大于等于     -eq 等于     -ne 不等于   ·test语句的等价形式[ 1 –lt 4 ] 可用中括号代替test,把表达式括起来实现判断 注意表达式与中括号间有空格。   test 1 –lt 4  #判断1<4 echo $?        #结果为0

文件测试

-f 存在且是普通文件 -d 存在且是目录 -s 存在且字节数大于0 -r 存在且可读 -w 存在且可写 -x 存在且可执行 如:test -d “mydoc”  [ -d "mydoc" ] 判断mydoc是否是目录             eg:检测从命令行输入的文件是否存在 if [ $# -ne 1 ] then      echo "usage -$0 file-name"     exit 1 fi   if [ -f $s1 ]

字符串测试

test s      字符串s非空 test s1=s2  字符串s1等于s2 test s1!=s2 字符串s1不等于s2  test  -z  s         字符串长=0,即为空串 test -n s   字符串长>0   =: 等于则为真 !=:不相等则为真 -z字符串:字符串长度为零则为真 -n字符串:字符串长度不为零则为真

分支语句

if [ $# -eq 0 ] then     echo “输入了0个参数” elif [ $# -gt 1 ] then      echo “输入了多个参数” else      echo “输入了1个参数” fi  

case “$#” in    0) echo “输入了0个参数” ;;    1) echo “输入了1个参数” ;;    *) echo “输入了多个参数”;;  esac 每个分支条件后必须以两个分号结尾  

循环语句

只有条件为真时,就执行do和done之前的命令 while <条件> do     <命令(s)> done   while例子——求1到100的和 declare -i i=1 sum=0 while [ $i –le 100 ] do     sum=$[$sum+$i]     i=$[$i+1] done echo $sum

for循环取一列值作为输入并对循环中每个值执行循环 for variable_name in <list_of_values> do ... done   for i in `seq 1  9` do     echo `expr $i \* 10`  done     或写 echo $(expr $i \* 10)     乘号前加转义符,与数字间要有空格。

Read变量

read 变量1 [变量2 …]     可以从键盘上读取多个变量的值,用户输入数据时,以空格或者Tab键作为分隔。     如果输入的数据个数不够,则从左到右对应赋值,没有输入的变量为空;     如果输入的数据个数超了,则从左到右对应赋值,最后一个变量被赋予剩余的所有数据。   输出a到b序列数各数的10倍数 read a b for i in `seq $a $b` do echo `expr $i \* 10` done

转载请注明原文地址: https://www.6miu.com/read-2350124.html

最新回复(0)