从0写shell(二)
来源:互联网 发布:windows xp 关机重启 编辑:程序博客网 时间:2024/05/16 05:20
在shell中如何使用变量呢?我们直接来看代码var.sh
#!/bin/bash
#定义变量
var=name
#使用变量
echo $var
exit 0
这段代码非常简单,就只是简简单单定义了一个变量var,赋值为name,然后使用$符加变量名来取其值即可,哈哈,使用变量很容易吧!
接下来我们来学习下特殊字符
# 注释,它既可以放在行首,也可以放在命令行的后面
#! 这个符号比较特殊,我把它定位为命令解释器,我们所写的脚本一律使用bash
\ 转义字符,如果想打印#符号,可以使用echo "\#"
\n 表示换行
\t 水平制表符
\\ 反斜杠
\r 回车
如何在一行中写多条命令呢?其实这个非常简单,只需在命令间加上;号即可
比如我们想打印当前目录,以及查看目录下的所有文件,我们写个简单的脚本check.sh
#!/bin/bash
set -e
#同一行执行两条命令
pwd ; ls
exit 0
很简单吧!
相信学过其他语言的,一定对跳转语句不陌生,shell脚本也有自己的跳转指令,学习后我们不在从头到尾一次执行我们的脚本啦!
首先我们介绍下if语句
假如说我们有这样一个需求,我们在拷贝一个文件前需要判断这个文件是否存在,如果存在在拷贝,不存在则退出.
我们来写一个脚本mycp.sh来完成这样的功能.
#!/bin/bash
set -e
if [ -x $1 ] #判断文件是否存在,$1表示第一个参数,如果第二个参数可以表示成$2
then
cp $1 myname #实现拷贝命令
else
echo file not exist
exit 1 #以错误状态退出
fi
exit 0 #正常退出
我们这样去执行,./mycp.sh filename即可.
接下来我们学习下case.这里的case类似与switch语句,我们来写一个选择分支语句.
假如我们有这样一个需求,我们在屏幕上首先打印几条提示信息,然后希望用户根据我们的提示来选择不同的功能.根据用户的选择来执行不同的程序.
现我规定有3条指令可供用户选择:1.pwd(打印当前所在目录) 2.ls(查看所有文件) 3.touch a.c(想创建一个c程序),我们来写一个select.sh来完成这个功能,这里使用case.
#!/bin/bash
set -e
echo "1.pwd 2.ls 3.touch a.c"
echo -n "请选择(选择数字1,2,3即可):" # -n主要是为了使光标在:后面
read choice #是为了接收用户输入信息,并保存在choice变量中
case "$choice" in #case语句
1)
pwd
;; #每个选项以;;结束
2)
ls
;;
3)
touch a.c
;;
esac #case语句结束
好了,你是否感觉case语句也是如此简单吧!
接下来我们介绍下while循环语句
假如有这样一个需求,每一秒钟打印一个圆点,无限循环下去.
我们写个脚本while.sh,来完成这个功能.
#!/bin/bash
set -e
while true #永远zhen
do
echo -n .
sleep 1 #休眠1秒
done
exit 0
最后我们介绍下for循环
我们假设一个需求,就是循环打印1-10数字
我们写一个for.sh来实现这个功能
#!/bin/bash
set -e
for i in 1 2 3 4 5 6 7 8 9 10 #for语句
do
echo -n $i
done
exit 0
今天到这里,三大跳转语句已经学完了,是不是很容易啊!!!
- 从0写shell(二)
- 从0写shell(一)
- 从0写shell(三)
- shell写俄罗斯方块二
- 从0开始用shell写一个tomcat日志清理脚本
- 自己动手写一个简单的Shell之二:运行程序
- 干货教程 | 从0开始写"脉脉"(二)·底部导航栏
- 从0开始写MyScrollView
- shell(二)
- 二、shell
- Shell(二)
- Shell[二]: Shell杂谈
- 一道面试题:用shell写一个从1加到100的程序
- JAVA 从0开始 二
- 从0开始<二>:1
- python从0单排二
- 从0开始写jq框架
- 从0开始写代码--笔记
- android内存泄露优化总结
- 软件测试职业之面试
- 15OJ——换座位
- 数据库基础
- 两道SAT数学练习题
- 从0写shell(二)
- 查看某个端口是否被占用
- cocos2dx中文乱码问题
- LeetCode【8】. String to Integer (atoi) --java实现
- LightOJ - 1038 Race to 1 Again 递推+期望
- 没有钱
- Linux定时器
- ibatis SqlMapConfig.xml 配置settings
- 第十四周阅读程序(4):cin,get,getline函数