输入指的是shell程序读入输出。
输出指的是shell程序运行结果的处理。
输出通常使用echo命令
eg:
echo $str
echo $str >file
echo $str >>file
第二行>为覆盖,第三行>>为追加。
echo输出内容使用格式控制字符
\c:输出完毕不换行
\t:输出后跳格相当于Tab
\n:输出后换行
read 命令读取信息
如果只读入一个变量,会把所有输入信息赋给该变量,’Enter’结束输入。
如果输入多个变量,用空格隔开,输入时也用空格隔开。
读取语句后添加>filename表示从文件中提取数据,并赋给变量。
eg:
read var1
This cannot be repair.
echo $var1
read var1 var2 var3
This cannot be repair.
echo $var1 $var2 $var3
echo $var1
echo $var2
echo $var3
简单程序实例
eg:
#!/bin/bash
#read.sh
echo please enter your name:
read varl
echo hello $varl
文件重定向
command 1为标准输出,2*为标准输出的错误*
command > filename 覆盖该文件内容
command >> filename 追加到该文件内容
command 1 > filename 与没有1相同
command > filename2>&1把标准输出和标准错误一起重定向到一个文件中
command > filename2>>&1把标准输出和标准错误一起追加到一个文件中
command 2> filename把标准输出的错误重定向到一个文件中
command2 >> filename把标准输出的错误追加到另一个文件中
command < filename > filename2输入信息来自filename,输出信息指向filaname2
command < filename 把command命令以filename作为标准输入
eg:
ls > ls.out
ll > ls.out
ls ne 2> ls.error
ll ne 2>>ls.error
cat < ls.error
vi q.sh
*.sh
ZZ
ll <q.sh> list.out
read varl <q.sh
echo <q.sh
...
引号的使用
双引号表示引用一个字符串,字符串中特殊符号依旧作用。
单引号中特殊符号忽略只显示特殊符号。
反引号用于执行引号中的系统命令。
反斜线用于转义。
eg:
var1=1000
echo "hello linux $var1"
echo 'hello linux $var1'
单引号内部可以套双引号,双引号内部使用双引号需要使用单斜线转义。同样单引号内部再次使用单引号也需要使用单斜号进行转义。
eg:
echo "hello "linux""
echo "hello \"linux\""
echo 'hello "linux"'
echo 'hello \'linux\''
echo 'hello 'linux''
反引号的使用
使用反引号用于执行系统命令
eg:
var1=`expr 1 + 1`
echo $var1
var2=`expr 1+1`
echo $var2
需要注意的是算术运算数字和符号之间需要使用空格隔开,否则输出则为算式而非结果
测试语句
测试,指对变量的大小、字符串、文件属性等内容进行判断。
test命令可用于字符串、数字、文件状态等内容的测试。
返回0表示测试成功,返回1表示测试失败。
-d 测试文件是否是目录文件
-f 测试文件是否是正规文件
-L 测试文件是否是符号连接
-x 测试文件是否可执行
-s 测试文件是否非空
-w 测试是否可写
-u 测试文件是否有suid位设置
-r 测试文件是否可读
数值测试
指的是比较两个数值的大小或相等关系
1。test 第一个操作数 第二个操作数
2。[第一个操作数 数值比较符 第二个操作数]
数值比较符
-eq 两数是否相等
-ne 两数是否不相等
-le 第一个数是否不大于第二个数
-ge 第一个数是否不小于第二个数
-gt 第一个数是否大于第二个数
-lt 第一个数是否小于第二个数
逻辑测试
指的是将多个条件进行逻辑运算
-a 逻辑与
-o 逻辑或
! 逻辑否
字符串测试
指的是比较两个字符串是否相等,或者判断一个字符串是否为空
test 字符串比较符 字符串
test 字符串1 字符串比较符 字符串2
[字符串比较符 字符串]
[字符串1 字符串比较符 字符串2]
= 测试是否相等
!= 测试是否不相等
-z 测试是否空字符串
-n 测试是否非空字符串
流程控制结构
使用逻辑判断,针对结果执行不同语句
顺序结构
分支结构
循环结构
if 条件
then 命令1
fi
if 条件
then 命令1
else 命令2
fi
if 条件1
then 命令1
elif 条件2
then 命令2
else 命令3
fi
if 条件1 ;then 命令1
elif 条件2 ;then 命令2
else 命令3
fi
流程控制结构
eg:
#!/bin/bash
#!judge.sh
i=$[ $1 % 2]
if test $i -eq 0;then
echo oushu
else
echo jishu
fi
#!/bin/bash
#test.sh
if test -z $1
then echo "please input a filename"
else
if test -w $1
then echo "writeable"
else
echo "unwriteable"
fi
if test -x $1
then echo "excuteable"
else
echo "unexcutable"
fi
fi
for语句使用方法
for 变量名 in 列表
do
命令1
命令2
...
done
列表是一个使用空格分割取值的一个列表,每一次循环变量的取值依次从列表中索取。
eg:
#!/bin/bash
#for.sh
for char in a b c d f
do
echo $char
done
until循环
until 条件
do
命令1
命令2
...
done
eg:
#!/bin/bash
#sumup.sh
sum=0
i=1
until [ i -gt 100 ]
do
sum=$[ $sum + $i ]
i=$[ $i + 1 ]
done
echo $sum
啊啊啊啊啊。。。累得快死。。。这一段适应真不容易,多敲代码慢慢能不出错就好