shell学习笔记二
来源:互联网 发布:四川广电网络投诉电话 编辑:程序博客网 时间:2024/05/19 09:01
键盘读入字符
从输入中读取n个字符并存入变量variable_name:
read –n number_of_chars variable_name
例如:
$ read –n 2 var
$ echo $var
用不回显得方法读取密码:
read –s var
在特定时限内读取输入:
read -t timeout var
例如 read –t 2 var
用界定符结束输入行:
read -d delim_charvar
例如:read -d "d" var
当读到字符d时会自动结束输入。
字段分隔符和迭代器
内部字符分隔符(IFS)是shell脚本中的一个重要概念,在处理文本数据时,它可是相当的有用。我们将会讨论把单个数据流划分成不同数据元素的界定符,内部分隔符是用于特定用途的定界符。IFS是存储界定符的环境变量。它是当前shell环境使用的默认定界字符串。
例如,我们可以使用IFS读取变量中的每一个条目,
#! /bin/bash
data="name , sex , rollno";
oldIFS=$IFS;
#IFS=','
for item in $data
do
echo Item: $item
done
IFS=$oldIFS
默认情况下IFS是空格符,因此输入如下:
Item: name
Item: ,
Item: sex
Item: ,
Item: rollno
如果将注释去掉,以“,”分割,将会得到如下结果:
Item: name
Item: sex
Item: rollno
循环
Bash提供了多种类型的循环,以for循环和while循环为例。
for循环
for var in list
do
commands; #使用变量$var
done
也可以利用循环生成不同的序列。
echo {1..50}能够生成一个1到50的数字列表。
while 循环
while condition
do
commands;
done
用true作为循环条件能够产生无限循环。
until循环
在bash中可以使用一个特殊的循环until,它会一直执行循环直到给定的条件为真,例如:
#! /bin/bash
x=0;
until [ $x -eq 9 ];
do
let x++;
echo $x;
done
会输出1到9。
比较与测试
if 条件:
if condition:
then
commands
fi
else if 和else:
if condition;
then
commands
else if condition;
then
commands
else
commands
if
if和else语句可以进行嵌套,if的条件判断部分可能变得很长,但是可以用逻辑运算符将它变的简洁:
[ condition ] && action ;#如果condition为真,则执行action
[ condition ] || action ;#如果condition为假,则执行action
算术比较
条件通常放在封闭的括号中,一定要注意在[或]与操作数之间有一个空格,否者会报错。
对变量或值进行算数条件判断:
[ $var -eq 0 ] #当var值为0时,返回真
[ $var -ne 0 ] #当var值不为0时,返回真
其他的操作符如下:
-gt: 大于
-lt: 小于
-ge: 大于或等于
-le: 小于或等于
可以按照下面的方法结合多个条件进行测试:
[ $var1 –ne 0 –a $var2 –gt 2 ] #逻辑与-a
[ $var1 –ne 0 –o $var2 –gt 2 ] #逻辑或-a
还可以不同的条件测试不同的文件系统相关属性。
[ -f $file_var ] :如果给定的变量包含正常的文件路径或文件名,则返回真。
#! /bin/bash
fpath="/etc/passwd"
if [ -e $fpath ]; #判定给定的文件是否存在
then
echo File exists;
else
echo Dose not exist;
fi
字符串比较
使用字符串比较时,最好使用双中括号,因为有时候采用单个括号会产生错误,所以最好避开。常用方法:
[ [ $str1 = $str2 ] ],当两个字符串相等时,返回真。
[ [ $str1 == $str2 ] ],当两个字符串相等时,返回真。
[ [ $str1 != $str2 ] ],当两个字符串不相等时,返回真。
[ [ $str1 > $str2 ] ],当str1的字母比str2大时,返回真。
[ [ $str1 < $str2 ] ],当str1的字母比str2小时,返回真。
[ [ -z $str1 ] ],当str1包含的是空字符串,返回真。
[ [ -n $str1 ] ],当str1包含的是非空字符串,返回真。
test命令检测
test命令也可以用来条件检测,比如:
#! /bin/bash
var=0
if [ $var -eq 0 ]
then
echo "True"
fi
if test $var -eq 0
then
echo "True"
fi
从输入中读取n个字符并存入变量variable_name:
read –n number_of_chars variable_name
例如:
$ read –n 2 var
$ echo $var
用不回显得方法读取密码:
read –s var
在特定时限内读取输入:
read -t timeout var
例如 read –t 2 var
用界定符结束输入行:
read -d delim_charvar
例如:read -d "d" var
当读到字符d时会自动结束输入。
字段分隔符和迭代器
内部字符分隔符(IFS)是shell脚本中的一个重要概念,在处理文本数据时,它可是相当的有用。我们将会讨论把单个数据流划分成不同数据元素的界定符,内部分隔符是用于特定用途的定界符。IFS是存储界定符的环境变量。它是当前shell环境使用的默认定界字符串。
例如,我们可以使用IFS读取变量中的每一个条目,
#! /bin/bash
data="name , sex , rollno";
oldIFS=$IFS;
#IFS=','
for item in $data
do
echo Item: $item
done
IFS=$oldIFS
默认情况下IFS是空格符,因此输入如下:
Item: name
Item: ,
Item: sex
Item: ,
Item: rollno
如果将注释去掉,以“,”分割,将会得到如下结果:
Item: name
Item: sex
Item: rollno
循环
Bash提供了多种类型的循环,以for循环和while循环为例。
for循环
for var in list
do
commands; #使用变量$var
done
也可以利用循环生成不同的序列。
echo {1..50}能够生成一个1到50的数字列表。
while 循环
while condition
do
commands;
done
用true作为循环条件能够产生无限循环。
until循环
在bash中可以使用一个特殊的循环until,它会一直执行循环直到给定的条件为真,例如:
#! /bin/bash
x=0;
until [ $x -eq 9 ];
do
let x++;
echo $x;
done
会输出1到9。
比较与测试
if 条件:
if condition:
then
commands
fi
else if 和else:
if condition;
then
commands
else if condition;
then
commands
else
commands
if
if和else语句可以进行嵌套,if的条件判断部分可能变得很长,但是可以用逻辑运算符将它变的简洁:
[ condition ] && action ;#如果condition为真,则执行action
[ condition ] || action ;#如果condition为假,则执行action
算术比较
条件通常放在封闭的括号中,一定要注意在[或]与操作数之间有一个空格,否者会报错。
对变量或值进行算数条件判断:
[ $var -eq 0 ] #当var值为0时,返回真
[ $var -ne 0 ] #当var值不为0时,返回真
其他的操作符如下:
-gt: 大于
-lt: 小于
-ge: 大于或等于
-le: 小于或等于
可以按照下面的方法结合多个条件进行测试:
[ $var1 –ne 0 –a $var2 –gt 2 ] #逻辑与-a
[ $var1 –ne 0 –o $var2 –gt 2 ] #逻辑或-a
还可以不同的条件测试不同的文件系统相关属性。
[ -f $file_var ] :如果给定的变量包含正常的文件路径或文件名,则返回真。
#! /bin/bash
fpath="/etc/passwd"
if [ -e $fpath ]; #判定给定的文件是否存在
then
echo File exists;
else
echo Dose not exist;
fi
字符串比较
使用字符串比较时,最好使用双中括号,因为有时候采用单个括号会产生错误,所以最好避开。常用方法:
[ [ $str1 = $str2 ] ],当两个字符串相等时,返回真。
[ [ $str1 == $str2 ] ],当两个字符串相等时,返回真。
[ [ $str1 != $str2 ] ],当两个字符串不相等时,返回真。
[ [ $str1 > $str2 ] ],当str1的字母比str2大时,返回真。
[ [ $str1 < $str2 ] ],当str1的字母比str2小时,返回真。
[ [ -z $str1 ] ],当str1包含的是空字符串,返回真。
[ [ -n $str1 ] ],当str1包含的是非空字符串,返回真。
test命令检测
test命令也可以用来条件检测,比如:
#! /bin/bash
var=0
if [ $var -eq 0 ]
then
echo "True"
fi
if test $var -eq 0
then
echo "True"
fi
阅读全文
0 0
- shell学习笔记二
- shell学习笔记二
- Shell学习笔记(二)
- Bash Shell学习笔记二
- Linux Shell学习笔记二
- shell学习笔记二--工具
- Linux Shell学习笔记(二)
- shell编程学习笔记二
- shell 编程学习笔记(二)
- shell学习笔记(二)
- hbase 学习笔记二----shell
- shell脚本学习笔记二
- shell 学习 笔记(二)
- hbase 学习笔记二----shell
- Linux Shell 学习笔记(二)
- Linux Shell 学习笔记(二)
- shell 学习笔记 (二)
- 学习shell编程笔记(二)
- linux 删除文件 磁盘空间未释放
- Laravel设置器修改器
- 使用wordpress创建多站点
- SQL SERVER不能修改表的解决方法(增加字段、修改字段名)
- JavaScript获取数组中最大(最小)值
- shell学习笔记二
- React Native安卓微信分享集成
- linux下查看文件编码及修改编码
- Hadoop完全伪分布式搭建
- Android 系统 Settings 启动流程详解
- SpringSecurity学习【命名空间初体验】
- Looper源码细说
- 责任链模式
- 【Spring】Spring Framework Reference Documentation中文版37