shell和shell script
- shell
从程序员的角度来看,Shell本身是一种用C语言编写的程序、从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。
Linux的Shell种类众多,常见的有:Bourne Shell (/usr/bin/sh或/bin/sh)、 Bourne Again Shell(/bin/bash) 、C Shell (/usr/(bin/csh)、K Shell (lusr/bin/ksh) 、Shell for Root (/sbin/sh)
,等等。不同的Shell语言的语法有所不同**,所以不能交换使用**。每种Shell都有其特色之处,基本上,掌握其中任何一种就足够了。在本文中,我们关注的重点是Bash,也就是Bourne AgainShell,由于易用和免费,Bash在日常工作中被广泛使用:同时,Bash也是大多数Linux系统默认的Shell - shell script
Shell script是利用shell的功能所写的一个“程序”,这个程序是使用纯文本文件,将一些LinuxShell的语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能,以达到我们所想要的处理目的。Shell script提供数组、循环、条件与逻辑判断等重要功能,让用户也可以直接以shell来编写程序,而不必使用类似C程序来完成相关功能。
shell例子
shell对变量取值要在变量前加$
shell代码中,不能随便使用空格,shell会作为命令行进行执行,有空格的话,会把命令行解析为选项、参数的形式
执行的两种方式
bash hello.sh
./hello,sh
权限不够时,要添加执行的权限
条件判断语法
#!/bin/bash
SYSTEM=`uname -s` #命令置换符,把执行结果传给SYSTEM
if [ $SYSTEM=="Linux" ] ;then #中括号两边都要有空格
echo "Linux"
elif [ $SYSTEM=="Windows" ];then
echo "Windows"
else
echo "Unkown System"
fi
条件判断比较符
1.数值比较:gt(大于)、lt(小于)、eq(等于)、le(小于等于)、ge(大于等于)
2.字符串比较
str1 = str2:当两个串有相同内容时为真
str1 != str2:当串str1和str2不等时为真
-n str1:当串钓长度大于0时为真(串非空)
-z str1:当串的长度为0时为真(空串)
str1:当串str1为非空时为真
3.文件判断
–r file:用户可读为真
–w file:用户可写为真
–x file:用户可执行为真
–f file:文件为正规文件为真
–d file:文件为目录为真
–c file:文件为字符设备文件为真
–b file:文件为块设备文件为真
-s file:文件大小非O时为真
4.逻辑判断
–a :与
-o :或
!:非
switch/case语句
case expression in
pattern1)
statement1
;;
pattern2)
statement2
;;
pattern3)
statement3
;;
……
*)
statementn
esac
shell 循环
for i in seq 1 10; do #循环的列表
xx
done
while [ condition ] ;do #中括号要有空格
done
参数解析
$#
:参数个数
$*
:参数列表
$1
:第一个参数
解析命令行的例子:
#test.sh
#!/bin/bash
while [ -n "$1" ]
do
case "$1" in
-a|--account)
echo "param a"
a="$2"
echo $a
shift 2
;;
-s|--server)
echo "param s"
s="$2"
echo $s
shift 2
;;
-h|--help)
usage
return 0
;;
--)
shift
break
;;
*)
return 1
;;
esac
done
shell调试
set -x 与set +x:打开和关闭调试,显示这两段语句之间的变量结果
sh -x xxx.sh :运行的所有变量都显示
段注释
:<<EOF
xxxx
EOF
用source 让ini格式的文件shell脚本中生效
原文地址:https://blog.csdn.net/qq_44849814/article/details/124645008
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_48476.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!