shell命令按一定语法组成的文件。
Shell脚本有什么用?批处理文件 / 整合命令
- 软件启动
- 性能监控
- 日志分析
- ...
内置命令 / 外部命令
Shell脚本语言和C语言一样吗?- 编译型语言
- 解释型语言
cat /etc/shells [root@iZuf6a7sd2zy3fpen7rmbhZ ~]# cat /etc/shells /bin/sh //对应的解释器 /bin/bash /usr/bin/sh /usr/bin/bash第一个Shell脚本
[root@iZuf6a7sd2zy3fpen7rmbhZ ~]# vim hello.sh //创建一个shell脚本文件 #!/bin/bash //指定 shell 脚本解释器 echo "hello world!" //输出 hello world! [root@iZuf6a7sd2zy3fpen7rmbhZ ~]# ./hello.sh -bash: ./hello.sh: Permission denied //表示需要修改shell脚本可自行权限 [root@iZuf6a7sd2zy3fpen7rmbhZ ~]# chmod 777 hello.sh [root@iZuf6a7sd2zy3fpen7rmbhZ ~]# ll total 28 -rwxrwxrwx 1 yiqi yiqi 13 Dec 6 16:14 123.txt -rw-r--r-- 1 root root 1 Dec 6 17:11 222.txt -rwxrwxrwx 1 root root 35 Dec 22 12:16 hello.sh drwxr-xr-x 4 root root 4096 Dec 1 09:52 learn drwxr-xr-x 6 root root 4096 Jul 26 19:38 serverProject drwxr-xr-x 2 root root 4096 Nov 8 11:54 softWare drwxr-xr-x 4 root root 4096 Mar 7 2021 tools [root@iZuf6a7sd2zy3fpen7rmbhZ ~]# ./hello.sh hello world!Shell启动方式
- 当程序执行
- 指定解释器运行
- source和.
当程序执行 ./hello.sh 指定解释器运行 /bin/bash hello.sh source和. source hello.sh / . hello.shShell脚本语法讲解 定义变量
- value=v
- value='v'
- value="v"
单引号 和 双引号主要作用是在当字符串中存在空格符时使用
区别在于 单引号括起来的是所见即所得,双引号是所见可以转换
示例
#!/bin/bash var1=hello #复制语句 = 左右两边 不能出现空格 echo $var1 # hello var2='hellow world' echo ${var2} # hellow world var3="hello shell" echo ${var3} # hello shell var4='${var1}var4' echo $var4 # ${var1}var4 var5="${var1}var5" echo $var5 # hellovar5使用变量
- $value
- ${value}
两者的区别:{}使用的主要目的是变量界限的确定。
var6="shell" echo "$var6bb" #空白 因为变量名界限不明确,不知道你变量名是var6还是var6bb echo "${var6}bb" #shellbb将命令的结果赋值给变量
- value=`command`
- value=$(command)
var7=`pwd` echo $var7 var8=$(pwd) echo $var8删除变量
- unset
- 并排放
echo ${var7}aa读取从键盘输入的数据
- read
#!/bin/bash read -p "input a:" a # -p 表示输出提示信息 echo $a [root@iZuf6a7sd2zy3fpen7rmbhZ ~]# /bin/bash test.sh input a:12 12退出当前进程
- exit
- (())
#!/bin/bash read -p "input a:" a read -p "input b:" b var=$((a+b)) echo $var 运行结果 [root@iZuf6a7sd2zy3fpen7rmbhZ ~]# /bin/bash test.sh input a:10 input b:20 30逻辑与 / 或
- &&
- ||
test expression 和 [ expression ],中括号和字符之间要用空格隔开
管道command1 | command2
[root@iZuf6a7sd2zy3fpen7rmbhZ ~]# ls | grep "123" 123.txtif 语句
if condition
then
statement1
fi
if else 语句if elif else 语句
case in 语句 for in 循环语句 while 循环 函数欢迎分享,转载请注明来源:内存溢出
评论列表(0条)