Linux下Bash shell学习笔记
原文地址: http://www.cnblogs.com/NickQ/p/8870423.html
1、shell下没有变量类型和定义的概念。
- 变量直接使用不用定义
- 所有值都视为字符串。
- 在对变量取值都需要加$
- 行注释为 #
在shell中,算术运算,执行加减除
例如:
var1=5
var2=2
total=`expr $var1+$var2`
$ 是取变量值运算符
` 是命令置换符,将expr \(var1+\)var2执行结果赋值给total
expr 是做数学运算的命令
shell中,算术运算,执行乘
例如:
var1=5
var2=2
total=`expr $var1 \* $var2`
* 在shell中为通配符。在此用作乘法需要转义
\ 是转义命令符,因此 \*表示乘法。
2、设置PATH
PATH 是shell找寻命令的路径。如果执行的命令找不到,会报command not found错误。
修改PATH:
PATH = $PATH:/usr/temp
3、shell脚本第一句应指明解释器
一般第一句为: #!/bin/bash
4、条件判断
if 空格 [ 空格 条件1 空格 == 空格 条件二 ] 空格;空格then
注意汉字指明的空格 == ; > [] 两边必须有空格
例如:
#!/bin/bash
SYSTEM=`uname -s`
if [ $SYSTEM == "Linux" ] ; then
echo "Linux System"
elif [ $SYSTEM == "FreeBSD" ] ; then
echo "FreeBSD System"
elif [ $SYSTEM == "Solaris" ] ; then
echo "Solaris System"
else
echo "Unknow System"
fi
判断符号
1、字符串判断
str1 = str2 当两个串有相同内容时为真
str1 != str2 当串str1和str2不等时为真
-n str1 当串的长度大于0时为真(串非空)
-z str1 当串的长度为0时为真(空串)
str1 当串str1为非空时为真
2、数字的判断
int1 -eq int2 两数相等为真
int1 -ne int2 两数不等为真
int1 -gt int2 int1大于int2为真
int1 -ge int2 int1大于等于int2为真
int1 -lt int2 int1小于int2为真
int1 -le int2 int1小于等于int2为真
3、文件的判断
-r file 用户可读为真
-w file 用户可写为真
-x file 用户可执行为真
-f file 文件为正规文件为真
-d file 文件为目录为真
-c file 文件为字符设备文件为真
-b file 文件为块设备文件为真
-s file 文件大小非0时为真
4、复杂逻辑判断
-a 与
-o 或
! 非
5、switch/case结构
#!/bin/bash
SYSTEM=`uname -s`
case $SYSTEM in
Linux)
echo "Linux System"
;;
FreeBSD)
echo "FreeBSD System"
;;
Solaris)
echo "Solaris System"
;;
*)
echo "Unknow System"
;;
esac
6、Shell循环
举例 1:
#!/bin/bash
echo "Use for list 1~10"
for i in `seq 1 10` ; do
echo $i
done
echo "List file in current folder:"
for file in `ls`
do
echo $file
done
举例 2:
#!/bin/bash
echo "Use while list 1~10"
min=1
max=10
while [ $min -le $max ]
do
echo $min
min=`expr $min + 1`
done
6、Shell参数解析
参数说明:
$# 表示参数的个数
$* 表示所有的参数
$0 表示程序的名字
$1 表示第一个参数
$2 表示第二个参数
参数解析
实现不同参数,执行不同命令举例:
#!/bin/bash
while getopts "hv" opt #Parser the arguments
do
case $opt in
h)
usage ;;
v)
version ;;
?)
usage ;;
esac
done
函数调用不需要加括号。
Shell的其他应用
Shell调试
打开调试 set -x
关闭调试 set +x
例如: set -x xxx.sh
在shell脚本中添加,可局部打开调试。
Bash Shell段注释
:<< EOF
注释掉的代码
EOF
配置文件使用
source 或 . 命令可以让ini格式文件的引用生效。
例如:
#!/etc/bash.sh
CONF_FILE=/etc/sysconfig/network-scripts/ifcfg-eth0
source $CONF_FILE
etho $IPADDR
如上,变量IPADDR,未在shell中赋值,但却打印出了IP地址。原因是 source $CONF_FILE
,是/etc/sysconfig/network-scripts/ifcfg-eth0文件中的IPADDR,被引用到此shell中。
Linux下Bash shell学习笔记的更多相关文章
- Linux下Bash入门学习笔记
学习好shell编程是很有用的,可以使用shell脚本轻巧地完成有趣的工作. 本文地址:http://www.cnblogs.com/yhLinux/p/4047516.html 1. Bash实例, ...
- 【Linux】bash shell学习
Bash Shell Linux系统的合法shell都写入/etc/shells这个文件,默认使用的shell版本称为“Bourne Again Shell(简称bash)” 用户登录时系统会分配一个 ...
- bash shell学习笔记(一)—— 常用命令
一.基本的bash shell命令 1.默认bash shell 提示符是美元符号($); 2.bash手册 使用man命令来访问存储在Linux系统上的手册页面,如: bogon:~ Mac$ ma ...
- Linux Bash Shell学习笔记
参数扩展: 1.被名称引用的参数称作变量2.被数字引用的参数称作位置参数3.被特定符号引用的参数具有特殊的含义和用途,被称作Bash的特殊内部变量引用. 基本参数扩展:字符$会引导参数扩展.大括号是可 ...
- LInux下socket编程学习笔记
1.socket套接字: socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模 ...
- [转帖][Bash Shell] Shell学习笔记
[Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html 阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...
- shell学习笔记
shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...
- shell学习笔记汇总
1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...
- linux下的shell和脚本
1.各种Unix shell linux下的shell基本是从unix环境中的shell发展而来,贴一下wiki:其中我们常用的,可归类为Bourne Shell(/usr/bin/sh或/bin/s ...
随机推荐
- 微软在Build 2016开发者大会中发布 “认知服务”,牛津计划有正式名字啦!
2016年3月30日:微软在Build 2016开发者大会中发布“认知服务”. 在Build 2016开发者大会中,微软发布了新的智能服务:微软认知服务(Microsoft Cognitive Ser ...
- JAVA程序员常用开发工具
1.JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK).开发人员和最终用户可以利 ...
- Oracle查看每小时日志切换量脚本
---- Show the Number of Redo Log Switches Per Hour-- SET PAUSE ONSET PAUSE 'Press Return to Continue ...
- jclass和jobject的迷惑
[译]jclass和jobject 2012-09-18 15:02:58| 分类: Android |字号 订阅 jclass和jobject的迷惑第一次使用JNI,实例引用(jobject) ...
- 深入理解PHP传参原理(PHP5.2)
首先说下今天想到的一个问题.在编写php扩展的时候,似乎参数(即传给zend_parse_parameters的变量)是不需要free的.举例: PHP_FUNCTION(test) { char* ...
- 优秀的WEB前端开发框架:Bootstrap!
其实早就对Bootstrap有所耳闻,大概了解这哥们是做WEB前端的 但直到昨天以前,还没有对他产生任何深入了解的兴趣 冷落他的主要原因还是觉得会束缚手脚,毕竟自己多年来在WEB前端的积累一直没有停滞 ...
- es6之函数扩展与对象扩展
一.函数扩展 1.参数默认值 参数有默认值,后面不可以再加没有默认值的变量.如以下test函数中,不可以加写成 function test(x,y="word",z){ } fun ...
- Windows 10推送的锁屏壁纸保存方法
Windows 10推送的锁屏壁纸保存方法 工作中使用的系统为Windows 10,锁屏时显示的壁纸很漂亮,并且每天都会更新,有几张特别喜欢,于是就想这些壁纸到底保存在哪里呢?经过一番摸索,终于搞明白 ...
- iPhone 耳机在PC电脑上使用方法
把主声道(Master)从正中间调整到最左或者最右就行了
- asp.net mvc 如何在View中获取Url参数的值
如果url是 /home/index?id=3 直接Request就ok. 但是如果路由设定为:{controller}/{action}/{id} url是 /home/index/3 这时想在 ...