Linux入门之Shell脚本基础

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值