a1、echo
-n 表示不换行进行输出
echo -n “Linux”
echo “_C”
输出的结果为:Linux_C
-e 处理特殊字符
2、read命令
-n 不换行
-p 提示语句
-t 设置等待时间
-s 用户的输入不显示在显示器上,比如密码
1)、基本读取
read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说)。得到输入后,read命令将数据放入一个标准变量中。下面是read命令的最简单形式
由于read命令提供了-p参数,允许在read命令行中直接指定一个提示。
#!/bin/bash
read -p "Enter your name:" name
echo "hello $name, welcome to my program"
exit 0
在上面read后面的变量只有name一个,也可以有多个,这时如果输入多个数据,则第一个数据给第一个变量,第二个数据给第二个变量,如果输入数据个数过多,则最后所有的值都给第一个变量。如果太少输入不会结束。
备注:在read命令行中也可以不指定变量.如果不指定变量,那么read命令会将接收到的数据放置在环境变量REPLY中。
read -p "Enter a number"
环境变量REPLY中包含输入的所有数据,可以像使用其他变量一样在shell脚本中使用环境变量REPLY.
2)、计时输入.
使用read命令存在着潜在危险。脚本很可能会停下来一直等待用户的输入。如果无论是否输入数据脚本都必须继续执行,那么可以使用-t选项指定一个计时器。
-t 选项指定read命令等待输入的秒数。当计时满时,read命令返回一个非零退出状态;
#!/bin/bash
if read -t 5 -p "please enter your name:" name
then
echo "hello $name ,welcome to my script"
else
echo "sorry,too slow"
fi
exit 0
除了输入时间计时,还可以设置read命令计数输入的字符。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。
#!/bin/bash
read -n1 -p "Do you want to continue [Y/N]?" answer
case $answer in
Y | y)
echo "fine ,continue";;
N | n)
echo "ok,good bye";;
*)
echo "error choice";;
esac
exit 0
该例子使用了-n选项,后接数值1,指示read命令只要接受到一个字符就退出。只要按下一个字符进行回答,read命令立即接受输入并将其传给变量。无需按回车键。
3)、默读(输入不显示在监视器上)
有时会需要脚本用户输入,但不希望输入的数据显示在监视器上。典型的例子就是输入密码,当然还有很多其他需要隐藏的数据。
-s 选项能够使read命令中输入的数据不显示在监视器上(实际上,数据是显示的,只是read命令将文本颜色设置成与背景相同的颜色)。
#!/bin/bash
read -s -p "Enter your password:" pass
echo "your password is $pass"
exit 0
4)、读文件
最后,还可以使用read命令读取Linux系统上的文件。每次调用read命令都会读取文件中的”一行”文本。当文件没有可读的行时,read命令将以非零状态退出。读取文件的关键是如何将文本中的数据传送给read命令。最常用的方法是对文件使用cat命令并通过管道将结果直接传送给包含read命令的while命令
#!/bin/bash
count=1 //赋值语句,不加空格
cat test | while read line //cat 命令的输出作为read命令的输入,read读到的值放在line中
do
echo "Line $count:$line"
count=$[ $count + 1 ] //注意中括号中的空格。
done
echo "finish"
exit 0
3、数值运算
在linux 中数值运算通常可以使用 let 命令 、 (())和[] 操作
num1=3
num2=6
//let 命令使用
let s1=$num1+$num2
//$(())操作符
s2=$(($num1*$num2))
//$[]操作符
s3=$[$num2-$num1]
4、test 命令的测试功能 示例: test -e filename && echo “exist “|| echo “not exist”
1)、常见和文件相关的判断
文件类型的判断 | 如 test -e filename |
-e | 该文件名是否存在 |
-f | 该文件是否存在且为文件file |
-d | 该文件是否存在且为目录 |
文件权限的判断 | 如test -r filename |
-r | 该文件名是否存在且具有“可读”的权限 |
-w | 该文件名是否存在且具有“可写”的权限 |
-x | 该文件名是否存在且具有“可执行”的权限 |
-s | 该文件名是否存在且为“非空文件” |
2)、常见和两个整数之间的判断
两个整数之间的判断 | 如test n1 -eq n2 |
-eq | 两个数值相等 |
-ne | 两个数值不想等 |
-gt | n1 大于n2 |
-lt | n1小于n2 |
-ge | n1 大于等于n2 |
-le | n1 小于等于n2 |
3)判定字符串数据
字符串的判断 | 描述 |
test -z String | 判断字符串是否为空,为空则返回true |
test -n String | 判断字符串是否为空,为空则返回false |
test str1=str2 | str1 是否和str2 相等,如果相等则返回true |
test str1!=str2 | str1 是否和str2 相等,如果相等则返回false |
4) 多重判断
多重条件判定 | 例如:test -r -filename -a -x filename |
-a | 两个条件同时成立才返回true |
-o | 任何一个条件成立,就返回true |
! | 反状态 如test !-x file ,当file 不具有x时,返回true |