文档章节

Shell编程——变量、判断、重复动作

clebeg
 clebeg
发布于 2015/10/13 09:35
字数 477
阅读 105
收藏 10

Shell编程——变量、判断、重复动作

  • 变量除了维护有用的值还用于管理程序的状态,还可进行算术计算。 流程控制的功能造就了程序语言:条件判断、循环、函数。 *

变量复制与环境

  • 变量阈值之后相当与scala的 var 赋值,但是你想达到 val 的效果。使用 readonly
hours_per_day=24
readonly hours_per_day

环境是一个全局的(对所有用户而言)或者局部的(对某个用户而言)的简单map 环境,使用 export 可以将变量放入。为了兼容最好使用先赋值,在export。

declare -i your_var=your_value   # not readonly
declare -ir your_var=your_value  # readonly
unset your_var
unset -v your_var                # delete your except your_var
unset -f
  • 替换操作符号
${varname:-word} #当 varname 为 null 时 返回 word 否则返回 varname 不给 varname 赋值
${varname:=word} #当 varname 为 null 时 返回 word 否则返回 varname 给 varname 赋值word
${varname:+word} #当 varname 不为 null 时 返回 word 否则返回 null 不给 varname 赋值
${varname:?message} #当varname为null时返回 varname:?message
${#varname}      #获取 varname 的长度
  • 位置参数 直接实战代码看效果
# set 设置三个参数
clebeg@localhost:~$ set -- hello "hi there" greetings
clebeg@localhost:~$ echo there are $# total arguments
# 不加和加双引号的 $@ 和 $* 效果
clebeg@localhost:~$ for i in $@; do echo i is $i; done
i is hello
i is hi
i is there
i is greetings
clebeg@localhost:~$ for i in $*; do echo i is $i; done
i is hello
i is hi
i is there
i is greetings
clebeg@localhost:~$ for i in "$*"; do echo i is $i; done
i is hello hi there greetings
clebeg@localhost:~$ for i in "$@"; do echo i is $i; done
i is hello
i is hi there
i is greetings
clebeg@localhost:~$ shift
clebeg@localhost:~$ for i in "$@"; do echo i is $i; done
i is hi there
i is greetings

if elif else fi

建议的方式

if [ -f "$file" ] && ! [ -w "$file" ]
then
fi
#字符串比较传统方式
if [ "X$answer" = "Xyes" ] ...

case "$1" in
  -f)
    ;;
  -d | --directory)
    ;;
  *)
    echo $1: unkown option >&2
    exit 1
    ;;
esac

© 著作权归作者所有

clebeg
粉丝 45
博文 40
码字总数 40057
作品 0
广州
程序员
私信 提问
shell编程基础(四)——条件判断

依据某些条件测试结果来决定程序的控制流向和下一步的处理动作。 在test语句中,shell一般先执行变量替换或命令替换,然后再执行条件测试。 test命令的语法格式,主要三种: test expressio...

shw23
2016/06/08
123
0
Linux学习笔记(八)——简单shell语法

                编写Shell脚本的简单语法   提到编程,条件、分支、循环等语法肯定少不了。shell脚本编程亦是如此,下面只是结合最近学习的一些简单语法做的笔记,如有错...

zhoujie0111
2013/03/30
0
0
Shell编程 (Ⅰ)——date、if、case、for、while、break、continue

Shell编程 (Ⅰ) 一、shell脚本介绍 shell是一种脚本语言 和传统的开发语言比较,会比较简单 shell有自己的语法;可以使用逻辑判断、循环等语法 可以自定义函数,目的就是为了减少重复的代码...

feng-01
2018/07/30
56
0
shell编程 ---test

test命令用法。功能:检查文件和比较值 1)判断表达式 if test (表达式为真) if test !表达式为假 test 表达式1 –a 表达式2 两个表达式都为真 test 表达式1 –o 表达式2 两个表达式有一个为...

mjrao
2013/12/23
24
0
bash shell编程

命令行编辑: 光标跳转 ^a 跳到命令行首 ^e 跳到命令行尾 ^<- 向左跳转一个单词 ^-> 向右跳转一个单词 ^b 左移一个字符 ^f 右移一个字符 删除 ^u 删除光标至命令行首的内容 ^k 删除光标至命令...

魔都搬砖
2017/04/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
24分钟前
9
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
今天
7
0
太全了|万字详解Docker架构原理、功能及使用

一、简介 1、了解Docker的前生LXC LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpa...

Java技术剑
今天
17
0
Wifiphisher —— 非常非常非常流氓的 WIFI 网络钓鱼框架

编者注:这是一个非常流氓的 WIFI 网络钓鱼工具,甚至可能是非法的工具(取决于你的使用场景)。在没有事先获得许可的情况下使用 Wifiphisher 攻击基础网络设施将被视为非法活动。使用时请遵...

红薯
今天
66
1
MongoDB 4 on CentOS 7安装指南

本教程为CentOS x86_64 7.x操作系统下,MongoDB Community x86_64 4.2(GA)安装指南。 安装方式一:yum repo在线安装 [此方式较为简单,官方推荐] Step1:新建MongDB社区版Yum镜像源。 # vim ...

王焱君
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部