Linux - Shell程序设计基本语法

使用双引号的字符

双引号是Shell的重要组成部分

$ echo Hello        World
Hello World
$ echo "Hello     World"
Hello     World

如何显示: Hello “World”

以下命令可以吗?$ echo “Hello “World””

正确方法:echo “Hello \”World\””

条件测试

测试命令

test expression 或 [ expression ]

test命令支持的条件测试

字符串比较

算术比较

与文件有关的条件测试

逻辑操作

str1 = "abc"
if [ $str = "abc" ]; then
  echo "The strings are equal"
else
  echo "The strings are not equal“
 fi
 mkdir temp
 if [ -d temp ]; then
 echo "temp is a directory"
 fi

条件语句

形式
if [ expression ]
then
    statements
elif [ expression ]
then
    statements
elif …
else
    statements
fi
紧凑形式
; (同一行上多个命令的分隔符)

case语句

当执行append时,有多少种可能的情况出现?

#!/bin/sh
#脚本名: append
case $#
  1) cat >> $1 ;;
  2) cat >> $2 < $1 ;;
  *) echo ‘usage: $0 [fromFile] toFile‘ ;;
esac
No parameter or more than 2
Only 1 parameter & the file exist
Only 1 parameter & the file not exist
Both file exist
1st exist; 2nd not exist
2nd exist; 1st not exist
Both files not exist

select语句

形式
select item in itemlist
do
    statements
done
作用
生成菜单列表
举例:一个简单的菜单选择程序
#!/bin/sh
clear
select item in Continue Finish
do
    case “$item” in
        Continue) ;;
        Finish) break ;;
        *) echo “Wrong choice! Please select again!” ;;
    esac
done
Question: 用while语句模拟?

命令组合语句

分号串联
command1; command2; …
条件组合
AND命令表
         格式:statement1 && statement2 && statement3 && …
OR命令表
         格式:statement1 || statement2 || statement3 || …

函数调用

形式
func()
{
    statements
}
局部变量
local关键字
函数的调用
func para1 para2 …
返回值
return
yesno()
{
    msg=“$1”
    def=“$2”
    while true; do
        echo” ”
        echo “$msg”
        read answer
        if [ “$answer” ]; then
        case “$answer” in
    y|Y|yes|YES)
        return 0
        ;;
    n|N|no|NO)
        return 1
        ;;
    *)
        echo “ ”
        echo “ERROR: Invalid response, expected \”yes\” or \”no\”.”
        continue
        ;;
esac

        else
          return $def
        fi
     done
}
调用函数yesno
if yesno “Continue installation? [n]” 1 ; then
    :
else
    exit 1
fi

杂项命令

break: 从for/while/until循环退出

continue: 跳到下一个循环继续执行

exit n: 以退出码”n”退出脚本运行

return: 函数返回

export: 将变量导出到shell,使之成为shell环境变量

set: 为shell设置参数变量

unset: 从环境中删除变量或函数

trap: 指定在收到操作系统信号后执行的动作

“:”(冒号命令): 空命令

“.”(句点命令)或source: 在当前shell中执行命令

Shell应用举例

编写一个脚本,实现对Linux系统中的用户管理,具体功能要求如下

该脚本添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stuxx(其中xx从01到30)

关键命令

groupadd

useradd

mkdir

chown

chgrp

#!/bin/sh
i=1
groupadd class1
while [ $i -le 30 ]
do
if [ $i -le 9 ] ;then
username=stu0${i}
else
username=stu${i}
fi
useradd $username
mkdir /home/$username
chown -r $username /home/$username
chgrp -r class1 /home/$username
i=$(($i+1))
done
时间: 2024-10-09 20:20:25

Linux - Shell程序设计基本语法的相关文章

linux shell程序设计

1.什么是shell    shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).shell接收用户输入的命令并把它送入内核去执行,起着协调用户与系统之间进行交互的作用 2.shell脚本的一般执行过程      shell脚本就是一个包含若干行shell或者linux命令的文件.对于一次编写,多次使用的大量命令,就可以使用文件单独保存下来,以便日后使用.    通常shell脚本时,第一行一定要指明系统需要哪种shell解释用户的shell程序,默认采用#!bin/

Linux Shell编程 循环语法

for循环 for 循环是固定循环,也就是在循环时已经知道需要进行几次循环.有时也把 for 循环称为计数循环.语法: for 变量 in 值1 值2 值3… do 程序 done 在这种语法中,for 循环的次数取决于 in 后面值的个数(以空格分隔),有几个值就循环几次,并且每次循环都把值赋予变量.也就是说,假设 in 后面有三个值,for 会循环三次,第一次循环会把值 1 赋予变量,第二次循环会把值 2 赋予变量,以此类推. 示例:打印时间. [[email protected] ~]#

linux程序设计——shell程序设计(第二章)

第二章    shell程序设计 本章介绍以下内容: 什么是shell 基本思路 微妙的语法:变量,条件判断和程序控制 命令列表 函数 命令和命令的执行 here文档 调试 grep命令和正则表达式 find命令 shell执行shell程序,这些程序通常称为脚本,它们是在运行时解释执行的.这使得调试工作比较容易进行,因为可以逐行地执行指令,而且节省了重新编译的时间.然而,这也使得shell不适合用来完成时间紧迫型和处理器忙碌型的任务. UNIX架构非常依赖于代码的高度可重用性,如果你编写了一个

linux之shell编程基本语法

Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell.Shell也是一门编程语言<解释型的编程语言>,即shell脚本<就是在用linux的shell命令编程>.一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同的. 原文和作者一起讨论:http://www.cnblogs.com/intsmaze/p/6681562.html 微信:intsmaz

Linux Shell之一 Shell简介

玩Linux不知道Shell,那就是不懂Linux.这句话足以见证shell在Linux运维中的地位.一直想好好写下shell,但总是不知道如何写起,不是因为Shell太难,而是因为她太庞大,也可能是因为自己shell能力上的不足,怕不能体系化地了解Shell,但是要开始的终究还是要开始,Come On!什么是Shell     Shell是操作系统的最外层,Shell可以合并编程语言以控制进程和文件,以及启动和控制其它程序.shell 通过提示您输入,向操作系统解释该输入,然后处理来自操作系统

Linux Shell编程学习笔记一:shell简介

Q:什么是Shell,什么是shell脚本? A:Shell是一种用C语言编写的程序,它是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.它是命令语言.命令解释程序及程序设计语言的统称.它的作用就是遵循一定的语法将输入的命令加以解释并传给系统. 命令解释程序:shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用.用户在提示符下输入的命令都由shell先解释然后传给Linux核心.

Linux Shell简明教程(一)

系列文章首发平台为果冻想个人博客.果冻想,是一个原创技术文章分享网站.在这里果冻会分享他的技术心得,技术得失,技术人生.我在果冻想等待你,也希望你能和我分享你的技术得与失,期待. 神奇的Linux Linux有多神奇,我就不说了.作为在一个IT界混的码农,或多或少的都会接触Linux,不管你是怎么接触Linux,对于其中的一些命令肯定也会或多或少的了解一些.Linux虽然不是你的必须装备,但是装备上了Linux,对于你的职业生涯肯定是有百利而无一害的.基于此,我接触了Linux,然后就学习了一下

Linux Shell编程入门

从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用.深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一. Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh).Bourne

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执