`
javayestome
  • 浏览: 1041020 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

[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 Shell编程&常用shell命令

    Linux Shell编程与常用Shell命令是Linux系统管理及自动化工作中的核心技能。Shell是Linux操作系统下的一种命令行解释器,它提供了用户与操作系统内核交互的界面。通过编写Shell脚本,用户可以自动化执行一系列任务,...

    Linux常用命令,shell 编程命令整理

    在IT领域,Linux操作系统是...提供的`linux常用命令.xlsx`文件可能包含更具体的命令解释和示例,而`shell`文件可能是包含更多shell脚本实例的文档。深入理解和实践这些内容,对于成为Linux和系统管理的专家至关重要。

    维护常用linux命令\shell技巧

    熟练掌握Linux命令和Shell脚本编写技巧对于提升工作效率至关重要。以下是一些关于“维护常用Linux命令\Shell技巧”的详细知识点: 1. **基本命令操作**: - `ls`:列出目录内容。 - `cd`:切换目录。 - `pwd`:...

    Linux实验Shell命令操作

    在本次Linux实验中,我们重点学习了10个常用的Shell命令,并深入理解了Shell界面和变量的使用,以及顺序、选择和循环结构的编程模式。 1. **alias**:别名命令,可以为已存在的命令创建快捷方式。例如,`alias ll='...

    linuxshell命令unixshell命令教程.rar

    这份"Linux Shell命令Unix Shell命令教程"PDF文件将涵盖上述知识,并可能包括更详细的实例和练习,帮助读者深入理解和掌握Shell命令的使用。通过阅读和实践,你将能够更加熟练地运用这些命令来管理Linux和Unix系统,...

    linuxshell命令 unixshell命令教程

    本教程将深入探讨Linux Shell和Unix Shell命令,帮助你更好地理解和运用这些强大的工具。 一、Shell简介 Shell是操作系统中的一个程序,它为用户提供了一个与内核交互的界面。在Linux和Unix系统中,最常用的Shell有...

    linux常用命令与Unix Shell脚本

    在本文中,我们将深入探讨一些最常用的Linux命令以及Unix Shell脚本的基本概念。 首先,让我们看看那些常用的Linux命令: 1. **cat**:用于查看和合并文件内容,常用于快速查看文件的完整内容。 2. **cd**:切换...

    UNIX_LInux命令和SHELL编程.zip

    本文将深入探讨"UNIX_Linux命令和SHELL编程.zip"中的主要知识点,包括Shell编程的基本概念、常用Linux命令以及Unix命令。 **Shell编程**是通过Shell脚本实现自动化任务的技术。Shell是操作系统提供的一个命令解释器...

    Linux常用命令-Vi-简单Shell编程.zip_linux常用命令_vi

    在IT领域,Linux操作系统是许多开发人员和系统管理员的首选平台,因其开源、稳定和强大...嵌入式系统课程设计资料中的"Linux常用命令-Vi-简单Shell编程.pdf"会进一步提供详细步骤和实例,帮助初学者深入理解这些概念。

    linux常用shell脚本

    在本资料包中,"linux常用shell脚本"包含了个人整理的运维必备脚本和配置,让我们一起深入探讨一下这个领域的知识。 1. **Shell基础知识** - **Shell类型**:主要有Bash(Bourne-Again SHell)、Sh(Bourne Shell...

    Linux shell命令学习心得

    本文将深入探讨Linux shell命令的学习心得,分享一些实用技巧和常见命令的用法。 首先,Linux shell是操作系统与用户交互的接口,它允许用户通过输入命令来执行各种任务。在众多shell类型中,Bash(Bourne-Again ...

    linuxshell命令unixshell命令教程

    本教程针对初学者,旨在深入讲解Linux Shell和Unix Shell命令的使用,帮助你快速掌握这两种系统的操作技巧。 首先,Shell是一个命令解释器,它将用户输入的命令解析并执行。在Linux和Unix中,常见的Shell有Bash...

    Linux常用命令全集

    在IT领域,Linux操作系统是开发、管理...这个“Linux常用命令全集”CHM文件将涵盖这些命令的详细用法、选项及示例,是学习和查询Linux命令的宝贵资源。通过深入理解和实践这些命令,你可以更高效地在Linux环境中工作。

    Linux/Shell命令详解

    以上只是Linux Shell命令的冰山一角,实际使用中还有许多其他实用命令和技巧。通过阅读《ABS_Guide.pdf》这样的手册,你可以更全面地学习和理解这些命令,提升Linux操作技能。记住,实践是检验真理的唯一标准,不断...

    Linux系统Shell命令常用功能使用详解.docx

    Linux系统中的Shell命令是操作系统与用户交互的主要方式之一,它是一个命令解释器,不仅能够执行用户输入的命令,还能用于编写脚本程序,类似于DOS的批处理文件。Shell编程提供了一系列的变量和控制结构,使得用户...

    Linux常用命令-API手册.zip

    本压缩包"Linux常用命令-API手册.zip"包含了两个重要的参考资料:"Linux基础命令教程豪华版.chm"和"Linux常用命令大全.chm",它们为用户提供详尽的Linux命令学习指南。 "Linux基础命令教程豪华版.chm"可能是对Linux...

    linuxshell命令unixshell命令教程续

    本教程中的文件(01.pdf至12.pdf)可能涵盖了这些概念的详细介绍,包括使用实例和练习,逐步引导学习者掌握Shell命令和脚本编写。通过学习,初学者不仅能提升对Linux和Unix操作系统的理解,还能提高工作效率,为更...

    Shell脚本学习指南_中文版,shell脚本基础,LINUX

    4. **Shell命令**:学习和掌握常用的Linux命令,如ls(列出目录内容),cd(切换目录),mkdir(创建目录),rm(删除文件或目录),cp(复制文件或目录),mv(移动或重命名文件或目录),echo(打印输出),cat...

Global site tag (gtag.js) - Google Analytics