码迷,mamicode.com
首页 > 系统相关 > 详细

shell基础(二)

时间:2017-11-13 11:19:52      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:格式化字符串   有用   语法   表达式   默认   跳出循环   strong   bash   检测   

echo命令

Shell 的 echo 指令是用于字符串的输出。

#!/bin/sh
read name #读取标准输入的行
echo "$name It is a test"
echo -e "Yeah! \c" # -e 开启转义 \c 不换行
echo "It is a test"

printf命令

printf用作格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认printf不会像 echo 自动添加换行符,我们可以手动添加 \n。

#!/bin/bash

printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg  
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
#其中最后一个参数是 "def",%c 自动截取字符串的第一个字符作为结果输出。
$  printf "%d %s %c\n" 1 "abc" "def"
1 abc d

  

  %d %s %c %f 格式替代符详解:

  d: Decimal 十进制整数 -- 对应位置参数必须是十进制整数,否则报错!

  s: String 字符串 -- 对应位置参数必须是字符串或者字符型,否则报错!

  c: Char 字符 -- 对应位置参数必须是字符串或者字符型,否则报错!

 f: Float 浮点 -- 对应位置参数必须是数字型,否则报错!

Shell test 命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

 

num1=100
num2=100
if test $[num1] -eq $[num2]
then
    echo ‘两个数相等!‘
else
    echo ‘两个数不相等!‘
fi
if test -e ./bash
then
    echo ‘文件已存在!‘
else
    echo ‘文件不存在!‘
fi

 流程控制

 if判断else没有执行命令不写,可以写成一行(用分号隔开)。

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

  for循环

当变量值在列表里,for循环即执行一次所有命令,使用变量名获取列表中的当前取值。命令可为任何有效的shell命令和语句。in列表可以包含替换、字符串和文件名。
可以写成一行for var in item1 item2 ... itemN; do command1; command2 done;

while 语句

   while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。

#!/bin/sh
int=1
while(( $int<=5 ))
do
    echo $int
    let "int++"
done
#let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来。

until 循环

until循环执行一系列命令直至条件为真时停止。

until循环与while循环在处理方式上刚好相反。

一般while循环优于until循环,但在某些时候—也只是极少数情况下,until循环更加有用。

until 语法格式:

until condition
do
    command
done

case

Shell case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。

取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

#!/bin/bash
#在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来实现该功能:break和continue。

while :
do
    echo -n "输入 1 到 5 之间的数字:"
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
            break
        ;;
    esac
done

  

  

 

shell基础(二)

标签:格式化字符串   有用   语法   表达式   默认   跳出循环   strong   bash   检测   

原文地址:http://www.cnblogs.com/gala1021/p/7824897.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!