1.echo变量名的技巧

#! /bin/bash
read -p "please input value a: " a
declare -i ai=a
echo -e "ai=$ai \bok"

在这一行代码中,先输入a的值,是一个字符串。然后通过declare命令通过字符串“a”来定义ai的整数值,然后我们想把ai输出出来,可以直接用echo  "ai=$ai"来完成。但是如果我们想在后面再输出一些字符串呢?可以用一个空格分隔,然后定义想要输出的字符串。然是如果我们不想空格呢?可以给echo添加-e参数,然后用\b进行退格,就ok了。

num=
echo "this is the ${num}nd"

刚刚看到一个最方便的方法。


2.判断结构中注意空格

if [ $ai =  ]; then
echo "ai=$ai"
else
echo "ai is false"
fi

注意判断语句“[ $ai = 666 ];”中的四个空格,不隔开就会报错。


3.判断(A or B) and (C or D)

#! /bin/bash
#(A or B) and (C or D)
#(A or B)
test true
A=$? #A=
test false
B=$? #B=
AorB=
if [ $[A] -eq -o $[B] -eq ];then
AorB=
fi #AorB=
test true
C=$? #C=
test false
D=$? #D=
CorD=
if [ $[C] -eq -o $[D] -eq ];then
CorD=
fi #CorD=
if [ $[AorB] -eq -a $[CorD] -eq ];then
echo "(A or B) and (C or D) is true"
else
echo "(A or B) and (C or D) is false"
fi

4.将命令执行结果保存在变量中

var=$(命令)
var=`命令` # 注意此处不是普通的单引号

shell札记的更多相关文章

  1. linux shell 札记

    shell 数组 数组索引: 单个元素索引: ${array[n]} 全部元素:   ${array[*]}  或者  ${array[@]} 部分索引: ${array[2:]} 数组所有元素统一加 ...

  2. Linux shell编程札记

    if-then的高级特性 [[]].[]都是用来测试( 测试分为数值比较.字符串比较.文件比价 )的,[[]]是关键字,里面可以用&&.||.<.>等类似C语言的语法:[] ...

  3. 愚人的linux内核2440移植札记(超曲折版)

    http://blog.csdn.net/dreambegin/article/details/6904822 原来文章叫--编译内核之初体验.后来想了想,这篇文章让我体验了好多遍.不该叫这么大气的名 ...

  4. Java面试札记

    Java面试札记  在最深的夜里,即使是你的影子也会离你而去. 背景:愿某人在中秋节之前吃上大厂月饼!!!@CDZ 1.Java的八种基本数据类型? 整型:byte.int.short.long: 浮 ...

  5. Shell替换

    如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. #!/bin/bash a= echo -e "Value of a is ...

  6. Shell特殊变量

    $ 表示当前Shell进程的ID,即pid $echo $$ 运行结果 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数 ...

  7. shell变量

    定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...

  8. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  9. shell简介

    Shell作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. shell使用的熟练程度反映了用户对U ...

随机推荐

  1. Kubernetes学习续之一键部署kubeadm

    1.Kubernetes的架构和组件,在部署时,它的每一个组件都是一个需要被执行的.单独的二进制文件,所以不难想象,SaltStack这样的运维工具或由社区维护的脚本的功能,就是要把这些二进制文件传输 ...

  2. OpenStack 中 RabbitMQ 的使用

    OpenStack 中 RabbitMQ 的使用 本文是 OpenStack 中的 RabbitMQ 使用研究 两部分中的第一部分,将介绍 RabbitMQ 的基本概念,即 RabbitMQ 是什么. ...

  3. 示例:WPF仿制OSK做的系统键盘和数字键盘

    原文:示例:WPF仿制OSK做的系统键盘和数字键盘 一.目的:在应用osk.exe系统键盘时遇到很多不方便,比如有些系统调用不出来等问题,由此开发了一个系统键盘仿制osk 二.实现功能 1.目前实现大 ...

  4. Redis和数据库一致性

    1.实时同步  对强一致要求比较高的,应采用实时同步方案,即查询缓存查询不到再从DB查询,保存到缓存:      更新缓存时,先更新数据库,再将缓存的设置过期(建议不要去更新缓存内容,直接设置缓存过期 ...

  5. Nginx中的break和last

    rewrite中的break和last 两个指令用法相同,但含义不同,需要放到rewrite规则的末尾,用来控制重写后的链接是否继续被nginx配置执行(主要是rewrite.return指令). 示 ...

  6. springboot脚手架liugh-parent源码研究参考

    1. liugh-parent源码研究参考 1.1. 前言 这也是个开源的springboot脚手架项目,这里研究记录一些该框架写的比较好的代码段和功能 脚手架地址 1.2. 功能 1.2.1. 当前 ...

  7. Js数组语法

    js数组整理导向图 ---欢迎收藏^ - ^

  8. MYSQL中的时间类型

    时间上总共有五中表示方法:它们分别是 time.date.datetime.timestamp和year. time :  “hh:mm:ss”格式表示的时间值,格式显示TIME值,但允许使用字符串或 ...

  9. linux基础命令学习

    一 su命令 1. [yunwei@elymedia ~]$ yunwei   表示当前用户名 @elymedia   表示主机名 - 表示当前路径,涉及到当前用户的主目录(家目录) $  表示普通用 ...

  10. 认识Redis

    认识的Redis 官方原文: Redis is an open source (BSD licensed), in-memory data structure store, used as a dat ...