shell下的一些符号问题



今天编写了一个测试程序(运行在Linux环境下),其中要将一些命令字符串预先保存在一个文件中,然后测试程序从文件中读取这些命令串。这些命令串中,字段与字段之间是用“\t”分隔符分开,每个命令串的结束,还要用“\r\n”结尾。

开始时,我只是简单的将这样的命令串,比如“305\t00:14:22:9C:22:9B\t10.1.10.17\t\r\n”直接保存到文件中。但是运行测试程序的时候,命令格式总是提示错误。我刚开始以为是从文件中读取命令串的函数有问题,但是经过反复试验,发觉不是读取文件的问题。通过将读取的字符串的每个字符打印显示,才突然想到,原来是这个分隔符在文件中就是以单独的字符存放的,而不是他们代表的意思了。(即“\t”就是'\'和't',而不是TAB键)

既然找到了问题所在,那就在文件中保存的时候,就直接键入Tab键和回车键。但是,在linux下的回车键只代表“\n”,而在windows下的回车键才表示“\r\n”,所以,将这个命令串文件先在windows下建好,再传到linux下,这样,终于将问题解决了。

 

 

 

 

echo的用法 (鸟哥私房菜300页)

功能说明:显示文字。

  语 法:echo [-ne][字符串]或 echo [--help][--version]

  补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行号。

  参 数:-n 不要在最后自动换行

  -e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

  \a 发出警告声;

  \b 删除前一个字符;

  \c 最后不加上换行符号;

  \f 换行但光标仍旧停留在原来的位置;

  \n 换行且光标移至行首;

  \r 光标移至行首,但不换行;

  \t 插入tab;

  \v 与\f相同;

  \\ 插入\字符;

  \nnn 插入nnn(八进制)所代表的ASCII字符;

  --help 显示帮助

  --version 显示版本信息

  每一个shell支持的echo指令可能都不太相同。

  -n 不输出最后的\n

  -e解释转义字符

  -E不解释转义字符

  示例:echo "i am a boy" // 执行后会打印 i am a boy

  i am a boy

 

 

 

 

 

read用法(鸟哥私房菜310页)

 

read命令:

read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量

1)read后面的变量var可以只有一个,也可以有多个,这时如果输入多个数据,则第一个数据给第一个变量,第二个数据给第二个变量,如果输入数据个数过多,则最后所有的值都给最后一个变量

-p  read –p “提示语句”,则屏幕就会输出提示语句,如下图

当变量个数和输入个数一样时:

shell下的一些符号问题

注意空格,要不会出错

当变量个数和输入个数不一样时,即输入个数比变脸个数多,则多的都赋给最后一个变量:

 

shell下的一些符号问题

2)命令计数

-n

read –n 个数

设置read命令计数输入的字符。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量

看一下cc.sh脚本的内容:

shell下的一些符号问题

 

read –n 1的意思是只接受一个字符

执行

shell下的一些符号问题

 

这里输入y后不用回车,自己就执行

3)等待时间

-t 时间

read –t 时间

使用read命令存在着潜在危险。脚本很可能会停下来一直等待用户的输入。如果无论是否输入数据脚本都必须继续执行,那么可以使用-t选项指定一个计时器。-t选项指定read命令等待输入的秒数。当计时满时,read命令返回一个非零退出状态;

看一下cc.sh脚本的内容:

shell下的一些符号问题

 

执行cc.sh然后等待超过5s,发现自动退出了

 

shell下的一些符号问题

4)关闭回显

-s

read –s

-s选项能够使read命令中输入的数据不显示在监视器上(实际上,数据是显示的,只是read命令将文本颜色设置成与背景相同的颜色),比如密码

看一下cc.sh的脚本内容

 

shell下的一些符号问题

 

执行,看到输入密码的时候屏幕不显示

 

shell下的一些符号问题

6)从文本读取内容并且赋给变量

 

shell下的一些符号问题

shell下的一些符号问题

shell下的一些符号问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值