1、shell脚本实例
注意:
脚本第一行一般写为:#!/bin/bash
#!/bin/bash
echo "Hello World !"
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
echo 命令用于向窗口输出文本
2、运行shell脚本的方法
1)、作为可执行程序
cd 到相应目录:
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
2)、作为解释器参数
/bin/sh test.sh
/bin/php test.php
3、shell传输参数
#!/bin/bash
# author:Kelsey Han
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,其中 $0 为执行的文件名,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
运行脚本:./test.sh 1 2
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。
#!/bin/bash
# author:Kelsey Han
echo "Shell 传递参数实例!";
echo "第一个参数为:$1";
echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";
运行脚本:
$ chmod +x test.sh
$ ./test.sh 1 2 3
4、shell 数组
Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小
my_array=(A B "C" D)
或
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
读取数组
${array_name[index]} 如 ${my_array[0]}
获取数组中的所有元素使用@ 或 * 可以获取数组中的所有元素:
${my_array[*]} 或${my_array[@]}
获取数组长度的方法与获取字符串长度的方法相同:
${#my_array[*]}或${#my_array[@]}
5、shell 运算符
expr 是一款表达式计算工具,使用它能完成表达式的求值操作,
注意使用的是反引号 ` 而不是单引号 '如
#!/bin/bash
# author:Kelsey Han
a=10
b=20
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
注意:
1、表达式和运算符之间要有空格;
2、完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边
3、条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]
4、乘号(*)前边必须加反斜杠(\)才能实现乘法运算
关系运算符
eq 检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 false。
-ne 检测两个数是否不相等,不相等返回 true。 [ $a -ne $b ] 返回 true。
-gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ $a -gt $b ] 返回 false。
-lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ $a -lt $b ] 返回 true。
-ge 检测左边的数是否大于等于右边的,如果是,则返回 true。 [ $a -ge $b ] 返回 false。
-le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ $a -le $b ] 返回 true
布尔运算符
! 非运算,表达式为 true 则返回 false,否则返回 true。 [ ! false ] 返回 true。
-o 或运算,有一个表达式为 true 则返回 true。 [ $a -lt 20 -o $b -gt 100 ] 返回 true。
-a 与运算,两个表达式都为 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ] 返回 false。
逻辑运算符
&& 逻辑的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false
|| 逻辑的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true
字符串运算符
= 检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。
!= 检测两个字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。
-z 检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。
-n 检测字符串长度是否为0,不为0返回 true。 [ -n "$a" ] 返回 true。
$ 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。
文件测试运算符
-b file 检测文件是否是块设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
-c file 检测文件是否是字符设备文件,如果是,则返回 true。 [ -c $file ] 返回 false。
-d file 检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false。
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。
-g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。
-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。
-p file 检测文件是否是有名管道,如果是,则返回 true。 [ -p $file ] 返回 false。
-u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] 返回 false。
-r file 检测文件是否可读,如果是,则返回 true。 [ -r $file ] 返回 true。
-w file 检测文件是否可写,如果是,则返回 true。 [ -w $file ] 返回 true。
-x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true。
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。
-e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true。
6、shell echo命令
都是用于字符串的输出
显示转义字符: echo "\"It is a test\""
显示变量: echo "$name It is a test"
显示换行:echo -e "OK! \n" # -e 开启转义
显示不换行:echo -e "OK! \c" # -e 开启转义 \c 不换行
显示结果定向至文件:echo "It is a test" > myfile
显示命令执行结果: echo `date`
7、shell printf 命令
printf 输出命令,使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n。
printf 命令的语法:
printf format-string [arguments...]
参数说明:
format-string: 为格式控制字符串
arguments: 为参数列表。
实例如下:
$ echo "Hello, Shell"
Hello, Shell
$ printf "Hello, Shell\n"
Hello, Shell
$
8、shell test 命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
num1=100
num2=100
If test $[num1] -eq $[num2]
then
echo '两个数相等!'
else
echo '两个数不相等!'
fi
9、shell 流程控制语句
如果else分支没有语句执行,就不要写这个else
if 语句语法格式:
if condition
then
command1
command2
...
commandN
fi
if else 语法格式:
if condition
then
command1
command2
...
commandN
else
command
fi
if else-if else 语法格式:
if condition1
then
command1
elif condition2
then
command2
else
commandN
Fi
for循环一般格式为:
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
while 语句
while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:
while condition
do
command
done
until 循环
until 循环执行一系列命令直至条件为 true 时停止。 until 循环与 while 循环在处理方式上刚好相反。一般 while 循环优于 until 循环,但在某些时候—也只是极少数情况下,until 循环更加有用。
until 语法格式:
until condition
do
command
done
case
Shell case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
相关推荐
最近在学习shell,找了很多资料,这个是其中不错的shell基础知识讲解,虽然比较基础,但是很容易懂~
### CShell基础知识详解 #### 一、引言 在之前的讨论中,我们已经涉及了许多Cshell的功能,例如命令别名、作业控制等。此外,任何一系列Cshell命令都可以存储在一个文件中,并通过调用Cshell来执行这些命令。这样...
shell基础知识介绍
**Shell基础知识12篇** Shell,作为Linux和Unix操作系统中的命令解释器,是用户与操作系统交互的重要工具。它不仅能够执行系统命令,还能通过编写脚本实现自动化任务,极大地提高了工作效率。以下是一些关于Shell的...
linux shell 基础知识 ,word版,看着更方便。。。。。
shell 基础知识、介绍、根据线上课程
Linux运维-运维系统服务04-Shell脚本d2-shell基础知识-02SHELL介绍.mp4
Linux运维-运维系统服务04-Shell脚本d2-shell基础知识-05BASH特性.mp4
Linux运维-运维系统服务04-Shell脚本d2-shell基础知识-10环境变量分类.mp4
Linux运维-运维系统服务04-Shell脚本d2-shell基础知识-11系统内置变量1.mp4
Linux运维-运维系统服务04-Shell脚本d2-shell基础知识-13上午内容回顾【变量分类】.mp4
5. SHELL 输入与输出 6. 命令执行顺序 7. 正则表达式介绍 文本过滤 8. GREP 家族 9. AWK 介绍 10. sed 用法介绍 11. 合并与分割 12. tr 用法 13. 登录环境 14. 环境与 SHELL 变量 特定s h e l l变量 15. 引号 16. ...
shell基础 umask chomod 权限更改 定时任务 解压缩
"shell基础知识.rar"这个压缩文件可能包含了更基础的Shell教程,涵盖了Shell的入门知识,如环境变量的设置、命令别名、管道(pipe)和重定向(redirect)的使用,以及常见Shell命令的介绍。这些基础知识对于初学者来...
新手小白看视频学习写的笔记
1. **Shell基础知识** - **变量与赋值**:在Shell中,变量可以用来存储各种类型的数据,如字符串、整数。赋值使用等号`=`,如`NAME="John Doe"`。 - **命令行参数**:脚本可以接收命令行参数,它们在脚本内部用$0...