第一个shell文件
来源:互联网 发布:手机连不上虚拟网络 编辑:程序博客网 时间:2024/06/06 02:55
该文主要记录自己学习shell所踩的一些坑!!!
什么是shell
windows下有.bat后缀的批处理,在linux下也有类似于批处理的东西,那就是shell,一般后缀为.sh,使用bash运行这种文件。
严格说,shell是一种脚本语言,和python, js一样,与c++,java不同。关于脚本语言和编译语言的区别可以参考知乎:编程语言 标记语言 脚本语言分别有哪些? 区别是什么?
为什么要学shell
在linux下,使用shell可以方便的与系统交互,实现很多任务的自动化处理。如果还想要更多理由,可以参考豆瓣:我们为什么要学习Bash Shell
第一个shell文件
这里写下我自己的第一个shell文件,后面简单介绍这个文件所涵盖的知识点,只希望能够点出shell中的若干有趣的点和容易踩到的坑。
#!/bin/bashstr="hello world"name="lijiguo"str1="helloworld"# how to use echo echo "the" first line : $str "\n"echo 'the second line :'${str} ${name} '\n'echo -e "the third line:" ${str1} "\n next line"#how to use parameterecho $0a=10b=20#how to use expressionvalue=`expr $a + $b`echo $valuevalue=`expr $a \* $b`echo $value#how to use if statementif [ $a == $b ]thenecho "a==b"elseecho "a != b"fi#how to use while statementidx=1while (($idx<=5 ))doecho $idxidx=`expr ${idx} + 1`done#how to redirectecho "this is a example" >> test.log#how to compare str#how to use python/bin/python test.py#how to use casewhile :doecho "input 1-5, input others to end"read numcase $num in1|2|3|4|5) echo "you enter $num";;*) echo "end"break;;;esacdone
程序输出如下:
the first line : \nthe second line : lijiguo \nthe third line: helloworld next line./blog.sh30200a != b12345python print testinput 1-5, input others to end1you enter 1input 1-5, input others to end2you enter 2input 1-5, input others to end6end
下面逐项介绍shell中涉及到的知识点。
文件第一行
#!/bin/bash
这一行指定执行该文件的shell,该行是约定俗成的。
变量赋值
变量赋值这么简单的事还要说?
这里确实要说,等号两边不能加空格!不能加空格!不能加空格!而且变量赋值变量前面不加美元符。
使用echo
echo "the" first line : $str "\n"echo 'the second line :'${str} ${name} '\n'echo -e "the third line:" ${str1} "\n next line"
参考输出:
the first line : \nthe second line : lijiguo \nthe third line: helloworld next line
- 单引号和双引号,甚至不加引号都可以输出字符串。
- 变量使用时是 $name
- echo不会自动转义输出,加上-e参数才会转义输出。
如何使用参数
假如我们想向shell中传入参数,在shell中如何获取呢?
$0表示shell的文件名,$1表示第一个参数,$2表示第二个参数,以此类推,$*表示将所有参数合成一个字符串返回,$@表示将多有参数分成多个字符串返回。
如何使用表达式
shell不支持直接求解表达式,需要借助expr。
value=`expr $a + $b`echo $valuevalue=`expr $a \* $b`echo $value
输出是
30200
敲黑板敲黑板:
1. 求解的表达式用反引号引起来,是反引号,ESC下面那个
2. 变量和运算符之间要有空格,$a+$b是不对的,$a + $b才对。
3. 乘法要用\*来实现.
4. 其它运算,都可以这样实现。
使用if语句
- 基本框架是 if condition then else fi
- condition中使用[]或者(())将条件表达式括起来。
- fi是if倒序,表示if语句结束。
如何使用while语句
- 基本框架 while condition do done
- 当condition是冒号(:)时,表示无限循环。
- do/done表示一个语句块,两者成对出现。
如何使用重定向
echo "this is a example" >> test.log
>>两边要有空格
如何使用case
while :doecho "input 1-5, input others to end"read numcase $num in1|2|3|4|5) echo "you enter $num";;*) echo "end"break;;;esacdone
- ;;表示一个分支结束
- *表示others
- esac表示case的结束,是case的倒序
结语
新手,上面没有全面的语法,没有完整的例程,只是自己踩的一些坑。如有错误,还请不吝赐教。
参考
Shell教程|菜鸟教程
- 第一个shell文件
- 我的第一个shell脚本文件
- 第一个shell
- 第一个shell程序
- 第一个shell脚本
- 第一个shell程序
- 第一个shell程序
- 第一个Shell
- 第一个Shell程序
- 第一个Shell脚本
- 第一个shell脚本
- 第一个shell
- 第一个Shell脚本
- 第一个Shell脚本
- 第一个shell
- 第一个Shell脚本
- 第一个Shell脚本
- 第一个Shell脚本
- 网络中的端口分类调研
- 最大的位或
- STM32上使用UCOSII--消息队列和信号量集
- 学习Scrapy框架
- 接雨水
- 第一个shell文件
- 【KMP思想求循环节】hdu 1358 hust 1010 poj 2406
- caffe中forward过程总结(2)
- HDU1862 EXCEL排序【排序】
- 45-圆圈中最后剩下的数字
- 联络
- 【数据库系统概念】第6章 形式化关系查询语言 知识总结
- 格力空调价格。
- 求N的阶乘所得的数字末尾含有多少个0