shell入门笔记2:字符串、数组、echo与printf
说明:
本文是关于http://c.biancheng.net/cpp/shell/的相关笔记
shell字符串
字符串可以用单引号,也可以用双引号,也可以不用引号。
1 #!/bin/bash 2 3 ##字符串 4 5 #不加引号: 6 #无法出现; 7 echo a 8 echo a;b 9 10 #单引号: 11 #单引号里的任何字符都会原样输出,单引号字符串中的变量替换是无效的; 12 #单引号字符串中不能出现单引号(对单引号使用转义符后也不行)。 13 str='this is a string' 14 echo ${str} 15 str_1='$str' 16 echo ${str_1} 17 #str_2='\'a' 18 #echo str_2 19 20 #双引号: 21 #双引号里可以有变量替换; 22 #双引号里可以出现转义字符。 23 your_name='wuyifan' 24 str="Hello, I know that you are \"$your_name\"!" 25 echo ${str} 26 27 #拼接字符串 28 greeting="hello,"$your_name"!" 29 greeting_1="hello,${your_name}!" 30 echo $greeting"/"$greeting_1 31 32 #获取字符串长度 33 string="abcd" 34 echo ${#string} 35 36 #提取子字符串 37 string="alibaba is a great company" 38 echo ${string:1:4} 39 40 #查找子字符串: 41 #索引 42 #expr index $string $substring 43 #在字符串$string中所匹配到的$substring的第1个字符第一次所出现的位置。 44 echo `expr index "$string" is` 45 echo `expr index "$string" at`
字符串
shell数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
类似于C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
1 #!/bin/bash 2 3 ##定义数组 4 5 #()中以空格或者换行符分隔 6 names=("ljq" "ymq" "lc") 7 names_1=( 8 "ljq" 9 "ymq" 10 "lc" 11 ) 12 #还可以单独定义数组的各个分量 13 names_2[0]="ljq" 14 names_2[1]="ymq" 15 names_2[2]="lc" 16 #可以不使用连续的下标,而且下标的范围没有限制 17 18 ##读取数组 19 echo "first name: ${names[0]}" 20 echo "second name: ${names[1]}" 21 echo "third name: ${names[2]}" 22 #使用@或*可以获取数组中的所有元素 23 echo ${names_1[*]} 24 echo ${names_2[@]} 25 26 ##获取数组的长度:与获取字符串的长度相同 27 #获取数组元素的个数 28 echo ${#names[*]} 29 echo ${#names[@]} 30 #获取数组单个元素的长度 31 echo ${#names[2]}
数组
echo命令与printf命令
echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。
printf命令用于格式化输出, 是echo命令的增强版。它是C语言printf()库函数的一个有限的变形,并且在语法上有些不同。
注:
printf 不像 echo 那样会自动换行,必须显式添加换行符(\n)。
printf 命令的语法:
printf format-string [arguments...]
format-string 为格式控制字符串,arguments 为参数列表。
这里仅说明与C语言printf()函数的不同:
printf命令不用加括号。
format-string可以没有引号,但最好加上,单引号双引号均可。
参数多于格式控制符(%)时,format-string可以重用,可以将所有参数都转换。
arguments使用空格分隔,不用逗号。
1 #!/bin/bash 2 3 #format-string为双引号 4 printf "%d %s\n" 1 "abc" 5 6 #单引号与双引号效果一样 7 printf '%d %s\n' 1 "abc" 8 9 #没有引号也可以输出 10 printf %s abcdef 11 echo 12 13 #格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string被重用 14 printf %s abc def 15 echo 16 printf "%s\n" abc def 17 printf "%s %s %s\n" a b c d e f g h i j 18 19 #如果没有arguments,那么%s用NULL代替,%d用0代替 20 printf "%s and %d \n" 21 22 #如果以%d的格式来显示字符串,那么会有警告,提示无效的数字,此时默认置为0 23 printf "The first program always prints'%s,%d\n'" Hello Shell
echo与printf
shell入门笔记2:字符串、数组、echo与printf的更多相关文章
- shell入门笔记1:执行方式、运行方式、变量、替换
说明: 本文是关于http://c.biancheng.net/cpp/shell/的相关笔记 shell的两种执行方式 交互式(interactive) 解释执行用户的命令,用户输入一条命令,She ...
- Shell 入门笔记(一)
Shell简介 在开发过程中Linux系统经常接触和使用的,Shell 是我们用户使用 Linux 的桥梁,是C 语言编写的程序.Shell 是一种命令语言,同时一种程序设计语言.对大多数开发人员来说 ...
- Shell - 简明Shell入门07 - 数组(Array)
示例脚本及注释 #!/bin/bash test0=() # 定义数组 test1=(a b c d e f) # 定义数组 test2=( # 定义数组 'A?' "BB!" C ...
- Shell基础(四):字符串截取及切割、字符串初值的处理、基使用Shell数组、expect预期交互、使用正则表达式
一.字符串截取及切割 目标: 使用Shell完成各种Linux运维任务时,一旦涉及到判断.条件测试等相关操作时,往往需要对相关的命令输出进行过滤,提取出符合要求的字符串. 本案例要求熟悉字符串的常见处 ...
- shell echo/read/printf/流程控制章节笔记
// echo read printf 流程控制 命令 1.read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量 read hello 输入xxx echo $hell ...
- shell 变量、参数、数组章节笔记
// 变量名和等号之间不能有空格 hello="123456"; echo $hello; // 花括号只是帮助识别变量边界 echo ${hello}; // unset 删除变 ...
- Shell - 简明Shell入门03 - 字符串(String)
示例脚本及注释 #!/bin/bash str="Shell" str2="Hello $str !" str3="Hello ${str} !&qu ...
- [转帖][Bash Shell] Shell学习笔记
[Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html 阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...
- MySQL入门笔记
MySQL入门笔记 版本选择: 5.x.20 以上版本比较稳定 一.MySQL的三种安装方式: 安装MySQL的方式常见的有三种: · rpm包形式 · 通用二进制 ...
随机推荐
- 查看端口使用情况(lsof,netstat, kill)
在Mac上查看端口使用情况只能使用lsof(list open file),无法使用 netstat. 查看某个端口是否正在被占用: lsof -i:portno 另外,可以通过: lsof 指令来查 ...
- 发布利用 Qt Assistant来做帮助系统的程序遇到的问题
最近,一直在做反演初始模型可视化建模的软件 model Constraint,最后的步骤就是利用 Qt Assistant为自己的程序制作帮助系统. 1.<Qt Creator快速入门>和 ...
- webpack----webpack4尝鲜
安装v4.0.0-beta.0 yarn add webpack@next webpack-cli --dev 或者 npm install webpack@next webpack-cli --sa ...
- RPC原理解析
1.RPC原理解析 1.1 什么是RPC RPC(Remote Procedure Call Protocol) --远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络 ...
- C语言第六周博客作业--数据类型
一.PTA实验作业 题目1: 7-6 掉入陷阱的数字 1. 本题PTA提交列表 2.设计思路 定义变量N,i,g=1表示位数,a表示各位数字相加的和,b=0,j,N1,c,d用于储存N do{ for ...
- Alpha冲刺置顶随笔
项目名称:城市安全风险管控系统 小组成员: 张梨贤.林静.周静平.黄腾飞 Alpha冲刺随笔 Alpha冲刺Day1:http://www.cnblogs.com/linlkg/p/7896980.h ...
- python第三方库requests详解
Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...
- [笔试题目]使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍?
[笔试题目] 使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍? StringBuffer 底层是依赖了一个字符数组才能存储字符 ...
- JAVA_SE基础——51.内部类
在Java中,允许在一个类的内部定义类,这样的类称作内部类,这个内部类所在的类称作外部类.根据内部类的位置.修饰符和定义的方式可分为成员内部类.静态内部类.方法(局部内部类)内部类. 内部类:一个类定 ...
- php的函数参数按照从左到右来赋值
PHP 中自定义函数参数赋默认值 2012-07-07 13:23:00| 分类: php自定义函数,默|举报|字号 订阅 下载LOFTER我的照片书 | php自定义函数接受参数 ...