1.1.变量和值之间不能有空格,否则解释器会认为是几个命令。很多程序员的习惯是在=号两边留空格为了好看,但这点在shell中行不通。
变量和值之间不能有空格
a=3
b=4
而不是,a= 4 ,b = 5
2.字符串不必用"号或者',上面的几种赋值方式是等价的。除非字符串之间有空格的时候。
如:
var="Hello World"
这时候就需要用引号。
3.
var=
这样的语句也是合法的,表示var的值为空
4.但与php不同的是变量赋值的时候不用加$符号。因为shell中没有==这个符号,判断相等也是用=号。如果赋值的时候加上$号,会产生混淆。
还有一点要注意的就是单引号(')字符串 中的变量不会被替换。
var=World
var2='$var World'
echo $var2
上面的语句输出结果:$var World
这个可以用来输出$等特殊符号,而不用担心字符被当作变量替换。
5.if语句
if语句
if [ condition ]
then
action
elif [ condition2 ]
then
action2
.
.
.
elif [ condition3 ]
then
else
actionx
fi
for循环
var="one two three four"
for x in $var
do
echo $x
done
for循环用do 和 done表示开始结束,不要举一反三,认为是用 rof结束。
4.while和util循环
while [ condition ]
do
statements
done
until [ condition ]
do
statements
done
5.条件语句
shell中的条件语句用[]号括起来,用于if,while,until等结构。
条件判断用=号,而不是==号。条件语句与[] 号之间要有空格分开。
如:
gender="boy"
if [ "$gender" = "girl" ]
then
echo 'Welcome!'
else
echo 'We only welcome girl.'
fi
6还有要注意的是条件语句中=号两旁要有空格分开,否则shell会将条件语句整个作为一个字符串处理,条件永远为真。条件语句中的变量最好用"号引起来,否则如果该变量中有空格,shell就会报too many arguments错误。如果变量正好为空,则会报 =: unary operator expected.错误。因为变量为空的话,条件语句少了一边,当然会出错。所以,将字符串变量用双引号括起来是shell编程的好习惯,尤其在条件语句中。
其他的比较符号,如 >,<,不能直接在条件语句中使用,因为>号在shell中有特殊含义。下面是shell的比较运算符号表示方法:
算术比较运算符
num1-eq num2 等于 [ 3 -eq $mynum ]
num1-ne num2 不等于 [ 3 -ne $mynum ]
num1-lt num2 小于 [ 3 -lt $mynum ]
num1-le num2 小于或等于 [ 3 -le $mynum ]
num1-gt num2 大于 [ 3 -gt $mynum ]
num1-ge num2 大于或等于 [ 3 -ge $mynum ]
字符串比较运算符
-z string 如果 string长度为零,则为真 [ -z "$myvar" ]
-n string 如果 string长度非零,则为真 [ -n "$myvar" ]
string1= string2 如果 string1与 string2相同,则为真 [ "$myvar" = "one two three" ]
string1!= string2 如果 string1与 string2不同,则为真 [ "$myvar" != "one two three" ]
7.
case 语句
gender="boy"
case "$gender" in
boy)
echo "We only welcome girl."
;;
girl)
echo 'Welcome !'
;;
*)
echo "unknow."
;;
esac
case语句的语法比较怪,乍一看比较别扭。每个pattern用 半括号括起来,用;;结束。
分享到:
相关推荐
下面将详细介绍创建 Shell 脚本、Shell 基础语法、流程控制语法以及如何定义和使用 Shell 函数。 首先,让我们理解一下 Shell 编程的基础。Shell 是操作系统提供的一种命令解释器,用户通过 Shell 与操作系统进行...
### Korn Shell (ksh) 语法、变量和内置命令详解 #### 一、Korn Shell 简介 Korn Shell(简称 ksh)是一种功能强大的 Unix Shell,由 David Korn 在 AT&T 贝尔实验室开发。Korn Shell 结合了 Bourne Shell 和 C ...
Bourne Shell的主要特点是它的命令语法结构、环境变量、特殊字符等。 shell编程简介: shell编程简介是指对shell编程的基本概念和技术的介绍,包括shell基础知识、shell变量、shell Script编程、shell的定制等。 ...
Linux运维学习中,Shell脚本的编写是基础技能之一。在Shell编程中,变量的数值运算是一项非常重要的功能。本文将详细介绍Shell变量的数值运算方法以及相关知识点。 首先,Shell变量进行数值运算时,常见的命令有:...
- 在条件判断语句中使用变量时,应确保正确引用变量值,避免语法错误。 ```bash if [ -z "$name" ]; then echo "emptyname" fi ``` - 使用双引号与单引号的区别在于,双引号内的变量会被展开,而单引号内的变量...
- **导出变量**: 使用`export`命令可以将变量声明为全局变量,以便其他命令或子Shell脚本访问。 - **位置参数**: 位置参数是在调用Shell脚本时传递给脚本的参数。脚本内部可以通过`$1`, `$2`, ...等来访问这些参数。...
计算机软件基础:Bshell编程 在计算机软件基础中,Bshell编程是一种 Shell 程序编程,通过使用 ...通过这些知识点,我们可以了解到 Bshell 编程的基本概念和语法结构,这将有助于我们更好地学习和应用 Shell 编程。
在本实验中,我们将探索如何设计自己的Shell,这是一种命令行解释器,允许用户与操作系统进行交互。Shell是Unix和Linux系统中的核心组件,它接受用户的输入命令并执行相应的操作。让我们深入了解一下这个过程涉及的...
在 shell 中定义一个变量非常简单,只需要指定变量名和赋值即可,无需声明数据类型。例如: ```sh varStr="value" varNum=100 ``` 需要注意的是,在赋值时 `=` 左右两边不能有空格。当使用变量时,需要在变量名前...
Shell概述、编写及执行脚本、Shell变量、数值运算 在 Linux 系统中,Shell 是一个非常重要的组件,它位于 Linux 内核与用户之间,负责向内核翻译及传达用户/程序指令。Shell 既可以作为交互式的命令行工具,也可以...
这个“Shell十三问”可能是指一系列关于Shell编程的问题,涵盖了基础到高级的主题。以下是一些关于Shell编程的核心知识点: 1. **什么是Shell**: Shell是一个命令解释器,它接收用户输入的命令并将其转化为操作...
在Shell中,无需预先声明变量的类型,可以直接给变量赋值。例如,`NAME="John"` 创建了一个名为`NAME`的变量,并将其值设置为"John"。变量名是大小写敏感的,所以`name`与`NAME`被视为不同的变量。 2. **变量类型*...
常见的shell类型有Bourne(sh)、Korn(ksh)、Bourne Again(bash)、POSIX(psh)、C(csh)、TC(tcsh)以及Z(zsh),其中bash和zsh在一定程度上支持csh的语法。在选择shell版本时,应根据具体操作系统,如...
### Linux实验六 Shell变量知识点详解 #### 一、实验目的 1. **熟悉Shell变量**: - Shell变量是Shell编程中的基本概念之一,用于存储数据。这些数据可以是文件名、数字或文本字符串。 - 变量分为两种类型:用户...
Shell变量是编程的核心部分,包括用户定义变量、环境变量和位置变量(shell参数)。用户定义变量由`$`符号后跟变量名来引用,例如`myvar=value`。环境变量是可供子进程使用的全局变量,如`HOME`表示用户的主目录,`...
* 在 shell 脚本中可以使用三类命令: Unix 命令、流程控制命令和 Shell 内置命令 * Unix 命令: + `echo`:将文字容打印在屏幕上 + `ls`:文件列表 + `wc`:计算文件行数、单词数和字符数 + `cp`:文件拷贝 + ...
Shell学习第一章主要涵盖了Shell脚本语言的基础知识,包括Shell的介绍、基本语法、变量和字符串操作等内容。以下是对这些知识点的详细阐述: 1. **Shell介绍**:Shell是一种命令行解释器,它允许用户与操作系统进行...
3. **易用性**:Shell脚本的语法相对简单,易于学习和调试,且提供了丰富的控制结构和函数。 4. **灵活性**:Shell脚本可以处理简单的单行命令,也可以构建复杂的逻辑结构,如循环和条件语句。 5. **命令组合**:...