shell编程基础(2.2 SHELL编程语法)
来源:互联网 发布:mysql5.7 for mac 编辑:程序博客网 时间:2024/06/03 15:58
7 比较操作
比较操作一般用在条件判断中,以下语法使用条件判断为例:
7.1 字符串比较
1)字符串相等比较
if [ $str = “value” ]; then #注意等号两边比较有空格,否则为赋值运算
…
fi
2)字符串是否为空
if [ “-$str” = “-” ]; then #-没有任何含义,只是为了增加可读性
…
fi
if [ “X$str” = “X” ]; then #X没有任何含义,只是为了增加可读性
…
fi
3)字符串不相等比较
if [ $str != “value” ]; then #注意等号两边比较有空格,否则为赋值运算
…
fi
if [ ! $str = “value” ]; then #!为not的含义,即取反
…
fi
7.2 数字比较
1)大于、大于等于
if [ $str -gt 100 ]; then #-gt表示大于
…
fi
if [ $str -ge 100 ]; then #-ge表示大于等于
…
fi
2)小于、小于等于
if [ $str -lt 100 ]; then #-lt表示小于
…
fi
if [ $str -le 100 ]; then #-le表示小于等于
…
fi
2)等于、不等于
if [ $str –eq 100 ]; then #-eq表示等于
…
fi
if [ $str -ne 100 ]; then #-ne表示不等于
…
fi
if [ ! $str -eq 100 ]; then #!表示取否,-eq表示等于
…
fi
7.3 判断条件连接
1)与/and,即要求表达式1与表达式2同时为真
if express1 && express 2 ; #&&表示与/and含义 -a
then
…
fi
if [ str1 = “aa” ] && [ str2 = “bb” ] ;
then
…
fi
2)或/or,即要求表达式1或者表达式2之一为真
if express1 || express 2 ; #||表示或/or含义 -o
then
…
fi
if [ str1 = “aa” ] || [ str2 = “bb” ] ;
then
…
fi
3)取反,
if ! express1 ; #!表示去反
then
…
fi
if [ ! $? –eq 0 ];
then
…
fi
8 SHELL函数
可以将SHELL中需要重复执行的代码写成函数,与C编程的函数一致。
8.1 函数格式
定义函数的格式为:
函数名()
{
...
}
或者
函数名(){
...
}
两者方式都可行。如果愿意,可在函数名前加上关键字function,建议增加。
function 函数名()
{
...
}
8.2 向函数传入参数
函数可以带参数调用,调用方式为
函数名称 参数列表
函数取得传入的参数,与SHELL得到调用的参数完全一致:
判断参数个数:
$#
取参数:
$1 $2 …
8.3 函数返回参数
函数可以使用return 返回调用参一个值。调用者可以在调用函数后得到函数的返回值:
$?得到,如:
#调用格式:aaa parameter
aaa()
{
return 1
}
#错误用法
a=`aaa para` #无法得到返回值1
#正确用法
aaa para
ret=$?
如果使用exit,将退出SHELL程序
8.4 将常用函数写成库函数
为了重复利用代码,可以将函数写成库函数的方式,然后在SHELL中包含进行即可使用:
. libraryfile
9其他基本语法
9.1 条件连接符
and与
命令行:command1 && command2 #如果command1执行成功,执行commnad2
如:rm * && echo "File successfully removed"
(建议不要使用以上语法,因为语法不常用,可读性不强)
表达式:express1 && express2
如:if [ $1 -eq 1 ] && [ $1 -eq 1 ]
then
...
fi
or或
命令行:command1 || command2 #仅当前一个命令执行出错时才执行后一条命令
如:rm * || echo "File removed failed"
(建议不要使用以上语法,因为语法不常用,可读性不强)
表达式:express1 || express2
如:if [ $1 -eq 1 ] || [ $1 -eq 1 ]
then
...
fi
9.2 包含库函数
#. 空格之后将文件的路径, 一般放在程序的起始部分
. ./comm_func.sh.rc
9.3 信号处理
trap "echo ___ $0 interrupted ___; exit 1" 2
9.4 分割符
SHELL默认的分割符IFS为空格与TAB键。程序中可以使用定制的分割符
如:从dbaccess下载数据没有指定delimiter时,字段分割为”|”
OLD_IFS=$IFS
IFS=”|”
Read col1 col2 col3 < datafile
…
IFS=$OLD_IFS
9.5终端的一些知识
1) 使字符显示方式正常或者反转显示
echo“\033[m\c” #正常显示
echo“\033[7m\c” #反转显示
2)设置图形模式或者字符模式
echo“\033(B\c” #字符模式
echo“\033(0\c” #图形模式
3)从终端得到一个字符
TTY=`tty`
$1='`dd if=$TTY bs=1 count=1 2>/dev/null`'
4)定位光标位置
echo "\033[$1;$2H\c" #其中$1表示行,$2表示列
5) 设置终端参数
stty可以用来设置与限制终端属性,如:终端与计算机之间的传输率、退格、中断等。
echo[-echo] 是否回显
intr 生成中断信号,默认使用del按键生成
erase 退格键,即擦除前面一个字符
- shell编程基础(2.2 SHELL编程语法)
- shell编程基础(2.1SHELL编程语法)
- Linux Shell编程语法基础
- SHELL 编程之语法基础
- SHELL编程之语法基础
- 【shell】shell 编程基础
- Shell编程(基础)
- Linux shell脚本编程语法基础
- Shell 编程基础 --语法快速入门
- Shell 编程基础 --语法快速入门
- Shell 编程基础 --语法快速入门
- shell编程-IF语法
- Linux Shell 编程语法
- Linux Shell 编程语法
- Linux Shell 编程语法
- Linux Shell 编程语法
- Linux Shell 编程语法
- shell脚本编程语法
- socket通信的几个关键步骤
- Android 之TabHost
- C++基类与派生类的转换
- 需求文档中的UML
- Android应用签名
- shell编程基础(2.2 SHELL编程语法)
- Android自定义控件的属性
- C#开发和调用Web Service
- S5pc100 的linux-lcd驱动学习的总结分析
- 北大poj Q2_Parencodings
- (转)RemoteViews概述
- UISearchBar 背景图-举一反三
- Maven 添加架包 和一下常用的maven仓库网址
- 【转】给Java初学者的建议