Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。
Shell 既是一种命令语言,又是一种程序设计语言。它类似于DOS下的command和后来的。它接收用户命令,然后调用相应的应用程序。
Shell 脚本(shell script),是一种为 shell 编写的脚本程序,弱类型语言,在定义变量不需要指定变量的类型。
通说所说的 shell 都是指 shell 脚本,我们要知道,shell 和 shell script 是两个不同的概念。
引用.html
Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Linux 的 Shell 种类众多,常见的有:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
……
我学习的是 Bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。
在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。
#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。
在Linux中新建一个名为tesh.sh的文件,并输入下面的命令。
vim test.sh
#!/bin/bash
echo 'hello world!'
Shell脚本运行有两种方式:
chmod +x test.sh #使脚本具有执行权限
./test.sh #执行脚本
/bin/sh test.sh
#可也使用 sh test.sh
两种方式分别执行后结果为:
变量名=变量值
注意:等于号两边没有空格
命名规范:不能以数字开头,由字母、数字、下划线组成。
read 变量名
read -p “提示信息” 变量名
read -p "请输入您的名字:" name
echo $变量名
name=xiaoming
echo $name
释放变量的值,可通过unset 变量名:
变量释放后,不能再输出的值。
当变量带有空格时,可以使用引号将变量引起来:
向.sh文件中传递参数
格式:命令 文件名 参数
如:sh script4.sh /etc
而脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
其中有几个特殊的形式:
$0:代表文件名
$@:显示全部参数
$#:显示参数的个数
创建一个名为script5.sh的文件,并输入如下命令:
#!/bin/bash
echo "这个数据是$1"
echo "这个数据是$2"
echo "这是$0"
echo "这是$@"
echo "这是$#"
保存后,向文件中传递参数,如下:
sh script5.sh /etc /nihao
执行结果为:
语法格式:
if [ 条件 ]
then
语句
else
语句
fi
或
if [ 条件 ];then
语句
else
语句
fi
注意:
练习:通过用户输入任意目录判断是否为空。
创建并编辑script6.sh
#!/bin/bash
#键盘录入任意目录
read -p "请输入目录:" dir
#dir=`ls /root`
d=`ls $dir`
if [ "$d" == "" ];thenecho "目录为空"
elseecho "目录不为空"
fi
补充知识点:
字符串的比较:==判断是否相等,!=判断是否不相等
语法格式:
if [ 条件 ]
then
语句
elif [ 条件 ]
then
语句
elif [ 条件 ]
then
语句
…
else
语句
fi
注意事项与if…else分支相同。
语法格式:
case $变量名 in
“值”)
语句;;
“值”)
语句;;
“值”)
语句;;
…
*)
语句;;
esac
注意:
练习:输入一个字母,判断该用户选择哪款产品,A:笔记本 B:电饭煲 C:小台灯
创建并编辑script13.sh
#!/bin/bash
read -p "请输入ABC用来选择产品:" wd
case $wd in
"A")echo "您选择了笔记本";;
"B")echo "您选择了电饭煲";;
"C")echo "您选择了小台灯";;
*)echo "没有对应产品";;
esac
运行结果:
语法格式:
for 变量名 in 列表
do
语句
done
补充知识点:
seq start size max
注意:如果size的值为1,则可以省略
练习:输出1-10之间的数
创建并编辑script16.sh
#!/bin/bash
for i in `seq 1 1 10`
doecho $i
done
运行结果:
while [ 条件 ]
do
命令
done
练习:求1-100之间的和
创建并编辑script1.sh
#!/bin/bash
i=1
sum=0
while [ "$i" -le 100 ]
dosum=$[$sum+$i]((i++))
done
echo $sum
运行结果:
<覆盖,<<追加
>覆盖,>>追加
测试文件的状态:test 参数 变量名
参数:
-e表示文件是否存在
-f 表示文件是否存在且为文件
-d 表示文件名是否存在且为目录
-r 可读
-w 可写
-x 可执行
-r -r filename 文件是否存在且可读
-w -w filename 文件是否存在且可写
-x -x filename 文件是否存在且可执行
-f -f filename 文件是否存在且是普通文件
-d -d filename 文件是否存在且是一个目录
-e -e filename 文件是否存在
-n -n str1 字符串长度是否不等于0
-z -z str2 字符串长度是否等于0
且: -a
或者: -o
非: !
-eq ---》判断是否相等
-ne--->判断是否不相等
-gt---->判断是否大于
-ge --->判断是否大于等于
-lt ----->判断是否小于
-le ---->判断是否小于等于
数字变量操作
((i++))
((i+=1))
i= [ [ [i+1]
let i=i+1
i= ( ( (( ((i+1))
变量间加减运算
s= ( ( (( ((s+ i ) ) s = i)) s= i))s=[ s + s+ s+i]
((s= s + s+ s+i))
定义格式:
函数名(){
代码
}
函数需要先定义再调用,调用格式:函数名
参数:$n
返回值:函数中默认的存在返回值
正确时返回0
错误时返回1
查看返回值内容 : $?
本文发布于:2024-01-29 08:02:07,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170648652713851.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |