shell编程基础是一种在Unix或Linux系统上的命令行环境下进行编程语言。Shell脚本解释器就是Shell,是一种脚本语言,在工作中用于自动化任务、批量处理数据、系统管理等,为我们的工作带来的极大的方便。给大家分享shell的基础知识
一.变量
Shell脚本中,变量可以直接赋值。变量定义时需要注意:含字母、数字和下划线,且不能以数字开头。
变量
#!/bin/bash
name="xian"
num=123456
echo "Hello, $name, num is $num"
输出结果为:
Hello, binjie, num is 123
注意:其中,name和num就是变量,在Shell脚本中使用时,需要在变量名前加上$符号
特殊变量:在shell编程中有一些特殊的变量这里给大家整理如下:
$0: 当前脚本的文件名。
$1~$9: 当前脚本或函数的参数,其中$1表示参数1,$2表示参数2,以此类推,最多可以有9个参数。
$#: 当前脚本或函数的参数个数。
$*: 当前脚本或函数的所有参数,每个参数用特定的分隔符分隔(默认为空格)。
$?: 命令是否成功,0表示成功,其他值表示失败。例如,echo $?可以查看上一个命令是否成功。
$@: 当前脚本或函数的所有参数,每个参数用空格分隔。
$: 当前脚本的进程ID。
$!: 最后一个后台进程的进程ID。
$-: 当前shell的选项(如使用set -o设置的选项)。
$?: 上一个命令的退出状态码(如上面提到的)。
$IFS: 输入域分隔符,用于指定"$*"和"$@"中的参数分隔符。
$PWD: 当前工作目录的完整路径。
$OLDPWD: 上一个工作目录的完整路径。
$RANDOM: 返回0到32767之间的随机整数。
$BASH_VERSION: 当前bash shell版本号。
$LINENO: 当前代码行的行号。
二.比较运算符
Shell编程中,比较运算符包括以下几种:
运算符 | 描述 |
-eq | 等于 |
-ne | 不等于 |
-gt | 大于 |
-ge | 大于等于 |
-lt | 小于 |
-le | 小于等于 |
= | 字符串相等 |
!= | 字符串不相等 |
-z | 字符串长度为0,即为空(zero) |
-n | 字符串长度不为0,即非空(non-zero) |
注意事项:
- 比较运算符需要放在方括号([ ])内使用。
- 比较运算符两侧需要有空格。
- 比较的对象可以是变量、常量或表达式。
- 除了=,!=之外的比较符只能用于数字比较,有字符也会先转换成数字然后进行比较。
- =和!=用于字符串比较。
例如:
num1=22
num2=33
if [ $num1 -eq $num2 ]; then
echo "num1 is equal to num2"
else
echo "num1 is not equal to num2"
fi
a1="text"
a2="text2"
if [ "$a1" = "$a2" ]; then
echo "a1 is equal to a2"
else
echo "a1 is not equal to a2"
fi
三.流程控制
Shell脚本中可以使用if语句、for循环、while循环等流程控制语句来实现各种条件判断和循环操作。
if语句
if语句用于进行条件判断,根据条件的真假执行相应的代码块。示例代码如下:
#!/bin/bash
num=100
if [ $num -gt 50 ]
then
echo "num is greater than 50"
else
echo "num is less than or equal to 50"
fi
输出结果为:
num is greater than 50
for循环
for循环用于遍历指定范围内(通常是一组数据)的变量,并逐个执行相应的代码块。示例代码如下:
shell复制代码#!/bin/bash
for i in 1 2 3 4
do
echo " $i"
done
输出结果为:
1
2
3
4
while循环
while循环用于在给定条件为真的情况下,不断执行相应的代码块。示例代码如下:
#!/bin/bash
num=1
while [ $num -le 3 ]
do
echo " $num"
num=$((num + 1))
done
输出结果为:
1
2
3
函数
Shell脚本也支持函数,并且函数参数的传递也很简单。可以通过function关键字或者省略关键字直接定义函数。
下面是一个简单的函数示例:
#!/bin/bash
function Hello(){
echo "Hello, $1, how are you?"
}
Hello xian
运行该脚本后,会输出“Hello, xian, how are you?”
$1表示函数的第一个参数,也就是传递给sayHello()函数的参数
整理不易,欢迎点赞收藏转发,关注我每天分享运维小知识。