shell脚本中,不能随意添加空格,否则出错:

1,=等号两边必须无空格。否则出错。如i =$1和i= $1都是错的。但是在()内部不限制如for ((i= 1;i < 3;i= i+1))是正确的。

2,(())内外部括号之间无空格,( () )这样报错。但内部括号内不限制,随便如s=$(( $i+1 ))可以

3,[]是条件判断式,所以前后内部都必须空格。其内部元素之间必须有空格才能识别,否则一律报错,如“while [ $i -lt 6 ]”少一个空格都报错。总之,[]所在行每个独立元素前后都必须有空格(不是一起的就必须空格)。-gt,-lt,-ge,-le,-ne

另外,单引号是字符串限定符,将内部内容作为字符串。而双引号和{}是变量限定符,内部作为变量处理

例子:

#!/bin/bash
for ((i= ;i < ;i= i+))
do
echo $i;
echo '$i';
echo "$i";
done while [ $i -lt ]
do
i=$(( $i+ ))
echo $i
done
s=$(( $i+ ))
echo $s

再如: bin=`dirname "$0"`  如果写成bin =`dirname "$0"`就报错

#!/usr/bin/bash

source /etc/profile

bin=`dirname "$0"`
echo $bin
echo "$bin"
echo '$bin'
echo ${bin}
echo "${bin}"
#inputfile="/home/deve_test_user/liu/observer_report_20130915155111"
inputfile="$bin/observer_report_20130915155111"
echo $inputfile
echo ${inputfile}
echo "$inputfile"
echo "${inputfile}" 输出: .
.
$bin
.
.
./observer_report_20130915155111
./observer_report_20130915155111
./observer_report_20130915155111
./observer_report_20130915155111

从例子中可以看出:

1.{}和“”对于变量没有影响。有没有一样

2.单引号''是变量成为字符串,echo '$bin'输出为$bin

shell 与 空格的更多相关文章

  1. shell脚本 空格

    1.定义变量时, =号的两边不可以留空格. eg: gender=femal----right gender =femal---–wrong gender= femal---–wrong 2.条件测试 ...

  2. shell中空格的使用;空格替换;通配符

    测试: test $? -eq && echo "yes" || echo "no" 通配符: 通配符 ()*:0个或多个连续的字符 ()?:任 ...

  3. shell脚本变量

    既然是变量,自然分变量名和变量值,在使用的时候一定要注意哪些地方需要用变量名,哪些地方需要用变量的值. 自定义变量 shell变量不需要声明,随用随定义,给变量赋值的时候要注意 shell是空格敏感的 ...

  4. paip.执行shell cmd 命令uapi java php python总结

    paip.执行shell cmd 命令uapi java php python总结 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:h ...

  5. shell脚本语法基础汇总

    shell脚本语法基础汇总 将命令的输出读入一个变量中,可以将它放入双引号中,即可保留空格和换行符(\n) out=$(cat text.txt) 输出1 2 3 out="$(cat te ...

  6. 《Linux命令行与shell脚本编程大全》第二十章 正则表达式

    20.1 什么是正则表达式 20.1.1 定义 正则表达式是你所定义的模式模板.linux工具可以用它来过滤文本. 正则表达式利用通配符来描述数据流中第一个或多个字符. 正则表达式模式含有文本或特殊字 ...

  7. linux base shell 基础语法2

    转载 http://blog.csdn.net/aggrelxf/article/details/8263110 单引 双引 反引用[] [[]] 将命令的输出读入一个变量中,可以将它放入双引号中,即 ...

  8. fish shell 下gopath的设置问题

    GOPATH可以设置多个工程目录,linux下用冒号分隔(必须用冒号,fish shell的空格分割会出错),windows下用分号分隔,但是go get 只会下载pkg到第一个目录,但是编译的时候会 ...

  9. Linux下Shell编程

    Linux的shell编程 1.什么是shell? 当一个用户登录Linux系统之后,系统初始化程序init就为每个用户执行一个称为shell(外壳)的程序. shell就是一个命令行解释器,它为用户 ...

随机推荐

  1. git学习(一)----基础知识

    git是世界上最好用最先进的版本管理系统,那么什么是版本管理系统呢,百度上是这样说的: 举个例子,当你写毕业论文的时候,灵感爆发了修改或者删除了一些内容,但是你还想保留之前的版本,就需要另存为不同的w ...

  2. [转]maven编译时出现读取XXX时出错invalid LOC header (bad signature)

    maven编译时出现读取XXX时出错invalid LOC header (bad signature) 一.发现问题右击pom.xml,run as —> maven install,会看到c ...

  3. [NOIP2003] 提高组 洛谷P1040 加分二叉树

    题目描述 设一个n个节点的二叉树tree的中序遍历为(1,2,3,…,n),其中数字1,2,3,…,n为节点编号.每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都 ...

  4. LCA 在线倍增法 求最近公共祖先

    第一步:建树  这个就不说了 第二部:分为两步  分别是深度预处理和祖先DP预处理 DP预处理: int i,j; ;(<<j)<n;j++) ;i<n;++i) ) fa[i ...

  5. sgu179 SGU起航!

    //发现dfs除了搜索功能外的其他功能,他本身是一种序列,这个题恰是"先序"的下一个(合法范围内)序列! #include<iostream> #include< ...

  6. Linux中的进程与线程

    介绍了Linux下fork()创建进程以及使用pthread_create()创建线程的方法 1. 基于进程的斐波那契数列 在下面的代码中,由子进程进行斐波那契数列的输出,父进程要等待子进程输出完毕, ...

  7. ACM-ICPC 2018 徐州赛区网络预赛 D 杜教筛 前缀和

    链接 https://nanti.jisuanke.com/t/31456 参考题解  https://blog.csdn.net/ftx456789/article/details/82590044 ...

  8. Java实验--继承与多态

    ---恢复内容开始--- 题目如下: [实验任务一]:面积计算(设计型). 1. 实验要求: 实验报告中要求包括程序设计思想.程序流程图.源代码.运行结果截图.编译错误分析等内容. 2.实验内容: ( ...

  9. CoolCTO - 创业者的技术合伙人

    CoolCTO - 创业者的技术合伙人

  10. Linux VPS/server上用Crontab来实现VPS自己主动化

    VPS或者server上常常会须要VPS或者server上常常会须要定时备份数据.定时运行重新启动某个服务或定时运行某个程序等等,一般在Linux使用Crontab,Windows以下是用计划任务(W ...