博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell编程中的小问题
阅读量:7254 次
发布时间:2019-06-29

本文共 982 字,大约阅读时间需要 3 分钟。

1、变量用=赋值时左边不能有空格。例如userName =nihao回车后会报userName:未找到命令。因为这里把userName当做命令来处理了。正确的做法是userName=nihao。

仔细才是最重要的,像这样的小问题真是很难发现。不过在用vim编辑器时有高亮显示命令是白色的,变量时绿色的。

2、用read -p 命令读取用户输入时,在-p后的提示后的变量名必须要有空格。例如read -p "Input your name:"Name会输出Input your name:Name,此时用户的输入不会按预期给Name。正确的做法是read -p "Input your name:"  Name(Name前的空格是必须的)。

3、在用==进行字符串比较时,==前后必须要有空格,若没有则是一直为真。例如:

#!/bin/bash#if [[ "1"=="2" ]];then        echo "xiangdeng"else        echo "budeng"fi

 只会输出xiangdeng,必须将[[ "1"=="2" ]]改成[[ "1" == "2" ]]才可以。

 4、[[]]和[]一般可以替换使用,但在=~(即在模式替换的时候)时必须使用[[]]

5、if [ ! -e "/etc/passwd" ]这里!和后面的-e要有空格。

6、算术运算需注意什么时候加$,例如下面sum=$[sum+=$num],里面的sum不能加$,因为这是变量赋值,而算完后在[]外面加$,是取变量的值。

#!/bash/bin#declare -i sum=0for num in {2..4};dosum=$[sum+=$num]  shiftdoneecho $sum

 7、字符串测试中用到=~去通配两边的时候在右边通配项不能加引号。例如 [[ $? -eq 0 ]] && [[ "$isblock" =~ .*block.* ]],在.*block.*上是不能加""的,如果加上代表完全匹配。两边必须一样才算匹配成功。

8、在grep匹配中,右边匹配的内容若含有-需要用\转义,否则不能正常匹配。如echo -20|grep "\-20"

转载于:https://www.cnblogs.com/Jc-zhu/p/4585586.html

你可能感兴趣的文章
border的简略
查看>>
echo
查看>>
接口测试工具-Jmeter使用笔记(九:跨线程组传递变量)
查看>>
(五)CXF之添加拦截器
查看>>
MySQL系列(四)
查看>>
C语言文件操作函数大全(超详细)
查看>>
sql语句
查看>>
log4j配置
查看>>
安装程序无法创建新的系统分区
查看>>
配置DNS服务器
查看>>
lock(3)——更新锁(U)、排它锁(X)、死锁及如何避免死锁
查看>>
使用SignalR 2 注意事项
查看>>
多进程 (一) — 像线程一样管理进程
查看>>
node+vue报错合辑
查看>>
Date——js 获取当前日期到之后一个月30天的日期区间
查看>>
RT-SA-2019-003 Cisco RV320 Unauthenticated Configuration Export
查看>>
Java线程练习
查看>>
Algs4-1.5.22Erods-renyi模型的倍率实验
查看>>
计算机硬件的组成、python的开发层面及语法介绍
查看>>
python面试知识点
查看>>