`
webcode
  • 浏览: 5954261 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

[29期] [Linux常用]Shell 命令和语句

 
阅读更多
[常用]Shell 命令和语句
1. read命令:从键盘读入数据,赋给变量
# read USERNAME
范例:
  1. #!/bin/sh
  2. read first second third
  3. echo "the first parameter is $first"
  4. echo "the second parameter is $second"
  5. echo "the third parameter is $third"


2. expr 命令:对整数型变量进行算术运算。
语法:
# expr Num1 + Num2
-
\* 需要转义
/

示例:[conde]
expr $var1 – 5
expr $var1 / $var2
expr $var3 \* 10
expr `expr 5 + 7` / $var4 * 复杂的运算
var4=`expr $var1 / $var2`
[conde]

3. test 语句:变量测试语句,用于测试变量是否相等、是否为空、文件类型等。
# test 测试条件
测试范围:整数、字符串、文件
a) 整数测试
test INT1 –eq INT2 测试整数是否相等(INT1 is equal to INT2)
test INT1 –ge INT2 测试INT1是否>=INT2 (INT1 is greater than or equal to INT2)
test INT1 –gt INT2 测试INT1是否>INT2(INT1 is greater than INT2)
test INT1 –le INT2 测试INT1是否=<INT2(INT1 is less than or equal to INT2)
test INT1 –lt INT2 测试INT1是否<INT2(INT1 is less than INT2)
test INT1 –ne INT2 测试整数是否不相等(INT1 is not equal to INT2)
b) 字符串测试
test STR1=STR2 测试字符串是否相等
test STR1!=STR2 测试字符串是否不相等
test STR1 测试字符串是否不为空
test –n STR1 测试字符串是否不为空
test –z STR1 测试字符串是否为空
c) 文件测试
test –d FILE 指定文件是否目录
test –f FILE 指定文件是否常规文件
test –x FILE 指定文件是否可执行
test –r FILE 指定文件是否可读
test –w FILE 指定文件是否可写
test –a FILE 指定文件是否存在
test –s FILE 文件的大小是否非0
d) 变量测试语句:一般不单独使用,一般做为if语句的测试条件,如
if test –d $1 then

fi

说明:测试$1是否为目录
简化:变量测试语句可用[ ]进行简化,如test –d $1 等价于 [ -d $1 ]
e) 范例1:判断两个数的大小
代码
  1. #!/bin/sh
  2. if [ $# -ne 2 ]; then # 判断此脚本参数的个数是否等于2
  3. echo "Not enough parameters"
  4. exit 0
  5. fi
  6. if [ $1 -eq $2 ]; then
  7. echo "$1 equals $2"
  8. elif [ $1 -lt $2 ]; then
  9. echo "$1 littler than $2"
  10. elif [ $1 -gt $2 ]; then
  11. echo "$1 greater than $2"
  12. fi

执行:
  1. [root@linux example]# sh test 1 1
  2. 1 equals 1
  3. [root@linux example]# sh test 1 2
  4. 1 littler than 2
  5. [root@linux example]# sh test 2 1
  6. 2 greater than 1

f) 范例2:测试apache是否启动

代码:
  1. #!/bin/sh
  2. # "if...else" usage
  3. # Using this program to show your system's services.
  4. echo "Now, the web services of this Linux system will be detect..."
  5. echo
  6. # Detect www service
  7. web=`/usr/bin/pgrep httpd` # 查找httpd的PID
  8. if [ "$web" != "" ] # 判断查找结果
  9. then
  10. echo "The Web service is running."
  11. else
  12. echo "The Web service is NOT running."
  13. /etc/rc.d/init.d/httpd start # 启动Apache服务
  14. fi

流程控制语句:用于控制shell程序的流程
4. exit语句:退出程序执行,并返回一个返回码,返回码为0表示正常退出,非0表示非正常退出。
语法:exit 0
5. if 语句
if...then...fi
范例:从新启动apache服务
  1. #!/bin/sh
  2. if [ -x /etc/rc.d/init.d/httpd ] # 等价于if [ test –x /etc/init.d/http ]
  3. then
  4. /etc/rc.d/init.d/httpd restart
  5. fi

6. if...else 语句
语法:
if 条件1 than
命令1
elif 条件2 then
命令2
else
命令3
fi

其他:多个条件的联合
-a:逻辑与,仅当两个条件都成立时,结果为真。
-o:逻辑或,两个条件只要有一个成立,结果为真。

范例:
  1. #!/bin/sh
  2. echo "please input a file name: "
  3. read file_name # 获取文件名
  4. if [ -d $file_name ] # 检测是否为目录
  5. then
  6. echo "$file_name is a directory"
  7. elif [ -f $file_name ] # 是否为普通的文件
  8. then
  9. echo "$file_name is a common file"
  10. elif [ -c $file_name -o -b $file_name ] # 是否为 设备或
  11. then
  12. echo "$file_name is a device file"
  13. else
  14. echo "$file_name is an unknown file" # 不知道
  15. fi

7. for ... done 语句
语法:
for 变量 in 名字表
do
命令列表
done

范例:
  1. #!/bin/sh
  2. for DAY in Sunday Monday Tuesday Wednesday Thursday Friday Saturday ABC # 一次匹配in后面的值
  3. do
  4. echo “The day is : $DAY”
  5. done

8. select 语句
语法:
select 变量 in 关键字
do
command 1

command n

done

说明:select把关键字中的每一项做成类似表单,以交互的方式执行do和done之间的命令。
范例:
  1. #!/bin/sh
  2. # "select" Usage
  3. echo "What is your favourite OS?"
  4. select var in "Linux" "UNIX" "Windows" "Other" "Mac" # 选择的数赋给变量var
  5. do
  6. break
  7. done
  8. echo "You have selected $var"

执行结果:
  1. [root@linux example]# sh select # 类似表单的选择
  2. What is your favourite OS?
  3. 1) Linux
  4. 2) UNIX
  5. 3) Windows
  6. 4) Other
  7. 5) Mac
  8. #? 5
  9. You have selected Mac
  10. [root@linux example]#

9. case...esac 语句
语法:
case 变量 in
字符串1) 命令列表1
;;
...
字符串n) 命令列表n
;;
esac

范例1:
  1. #!/bin/sh
  2. echo "*******************************"
  3. echo "Please select your operation:"
  4. echo " Press "C" to Copy"
  5. echo " Press "D" to Delete"
  6. echo " Press "B" to Backup"
  7. echo "*******************************"
  8. read op # 键盘获取字符
  9. case $op in # $op 匹配下面的字符串,匹配成功执行其下的相应命令
  10. C)
  11. echo "your selection is Copy"
  12. ;;
  13. D)
  14. echo "your selection is Delete"
  15. ;;
  16. B)
  17. echo "your selection is Backup"
  18. ;;
  19. *)
  20. echo "invalide selection"
  21. esac

执行结果:
  1. [root@linux example]# sh case
  2. *******************************
  3. Please select your operation:
  4. Press C to Copy
  5. Press D to Delete
  6. Press B to Backup
  7. *******************************
  8. D
  9. your selection is Delete
  10. [root@linux example]#

范例2:select与case结合使用
  1. #!/bin/bash
  2. # "select" "case" Usage
  3. echo "a is 5, b is 3. Please select you method: "
  4. a=5
  5. b=3
  6. select var in "a+b" "a-b" "a*b" "a/b" # 从中选择方法赋给var
  7. do
  8. break
  9. done
  10. case $var in # 匹配字符串,执行相应的代码
  11. "a+b") echo 'a+b='`expr $a "+" $b`;;
  12. "a-b") echo 'a-b='`expr $a "-" $b`;;
  13. "a*b") echo 'a*b='`expr $a "*" $b`;;
  14. "a/b") echo 'a/b='`expr $a "/" $b`;;
  15. *) echo "input error..."
  16. esac

执行结果:
  1. [root@linux example]# sh select.case
  2. a is 5, b is 3. Please select you method:
  3. 1) a+b
  4. 2) a-b
  5. 3) a*b
  6. 4) a/b
  7. #? 2 # 选择2的计算方法
  8. a-b=2
  9. [root@linux example]#

10. while 语句
语法:
while 条件
do
命令
done

范例:
  1. #!/bin/sh
  2. num=1
  3. while [ $num -le 10 ] # 判断$num 是否=<10
  4. do
  5. SUM=`expr $num \* $num` # 执行乘法
  6. echo $SUM
  7. num=`expr $num + 1`
  8. done

11. until 语句
语法:
until 条件
do
命令
done

说明:until类似while循环,不同的是until是条件返回值为假时才继续执行。
范例1:
  1. #!/bin/sh
  2. until [ -x /etc/inittab ] # 判断/etc/inittab是否为可执行文件,不是执行do里面的语句
  3. do
  4. /bin/ls -l /etc/inittab
  5. exit 0
  6. done

范例2:until和read的结合,判断输入的字符,直到正确时循环退出
  1. #!/bin/bash
  2. # "read" "until" usage
  3. echo "Press Y/y to stop..."
  4. read input # 获取字符
  5. until [ "$input" = "Y" ] || [ "$input" = "y" ] # 判断后面的语句是否为真,为假时执行do…
  6. do
  7. echo "error input,please try again..."
  8. read input
  9. done
  10. echo "Stop here!"

关于:[ "$input" = "Y" ] || [ "$input" = "y" ],有一个为真,即为真。全部为假时即为假。



分享到:
评论

相关推荐

    LINUX and SHELL 自学总结

    八、LINUX系统常用配置方法及命令 11 1. 网卡相关的TCP/IP网络配置文件地址 11 2. #NETCONFIG命令可以永久保存设置 11 3. #NEAT或REDHAT-CONFIG-NETCONFIG可永久保存设置。 12 4. #DATE命令的使用 12

    LINUX与UNIX SHELL编程指南(很全)

    2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 ...

    linux shell常用规则

    shell常用规则 shell特殊字符的引用 系统环境变量 循环语句 多重条件语句 命令组合:圆括号和花括号

    新版Linux Shell编程实训(全)20170518.docx

    项目六 Shell命令输出 112 [学习目标] 112 任务6.1 Shell echo命令 113 任务6.2 Shell printf命令 116 任务6.3 Shell test命令 119 任务6.4 Shell案例:查看系统资源使用情况 122 练习(每题20分,共计100分) 125 ...

    LINUX开发基础 系统使用 全屏编辑器VI SHELL 常用变量

    第一节 Linux系统概述 一、Linux简介 二、Linux系统的特点 三、Linux系统的组成 第二节 Linux系统的使用 ...三、Shell的测试命令 四、条件语句 五、循环语句 六、函数 七、参数变量和内部变量

    Linux与unix shell编程指南

    2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 ...

    绝版经典《Linux与UNIX Shell编程指南》

    2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 ...

    Linux shell编程指南

    2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 ...

    linux shell 编程教程

    2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 ...

    Linux网络操作系统基础:shell编程基础.pptx

    Shell 编程基础;熟悉 Shell 基础知识 ...Shell 中的结构化命令;条件语句;多分支判断语句;循环语句;for 循环;for 循环中的列表;for 循环奇数累加器;for 循环文件展示;while 循环;until 循环;使用循环打印乘法表;谢谢

    LINUX与UNIX SHELL编程指南 高清PDF

    2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 ...

    入门学习Linux常用必会60个命令实例详解doc/txt

    入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不...

    linux shell循环:for、while、until用法详解

    主要介绍了linux shell下常用的循环for、while、until的用法,这也是脚本之家小编看到的比较详细的文章了,感兴趣的朋友可以参考一下,最好是在环境下自己手工打一份,不要复制

    跟老男孩学Linux运维:Shell编程实战

    Shell脚本初步入门 / 62.1 什么是Shell / 62.2 什么是Shell脚本 / 72.3 Shell脚本在Linux运维工作中的地位 / 82.4 脚本语言的种类 / 92.5 常用操作系统默认的Shell / 112.6 Shell脚本的建立和执行 / 12第3章 ...

    Linux与Unix Shell编程指南(PDF格式,共30章)

    2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 ...

    LINUX与UNIX SHELL编程指南

    2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 ...

    LINUX 与 UNIX SHELL编程指南

    2.1.13 使用 exec 或 ok 来执行 shell 命令 19 2.1.14 find 命令的例子 20 2.2 xargs 20 2.3 小结 21 第 3 章 后台执行命令 22 3.1 cron 和 crontab 22 3.1.1 crontab 的域 22 3.1.2 crontab 条目举例 23 ...

Global site tag (gtag.js) - Google Analytics