linux shell 引号 参数,shell(三)变量,基本语法,单双引号

shell中的变量

变量的声明:在shell中变量不需要事先声明,不必显示声明

变量的赋值:VAR=value,不允许有空格。如:a=100

变量的数据类型:shell中的变量无数据(弱)类型!同一变量可以存放不同类型的值。

如:a=1.25a=100a=“Hello”

变量的获取:在shell中使用$或者${},如:$date,${date}

Unset:用于删除已经定义的环境变量或本地变量。Unset变量名bash的使用技巧

shell维护一个可以用alias和unalias内建命令来设置或者取消别名列表。用alias命令不带选项的时候显示当前shell所知的别名列表。

自定义时,等号两边不能有空格:alias list=‘ls -l’alias

lsh=‘ls *.shBourne shell保留变量

变量名

定义

auto_resume

这个变量控制shell如何与用户交互和作业控制。

BASH

用于执行当前Bash实例的全路径。

BASH_ENV

如果这个变量在Bash调用执行一个shell脚本时已被设置,它的值将被展开并用作在执行脚本前读取的启动文件名。

BASH_VERSION

当前Bash实例的版本号。

BASH_VERSINFO

一个只读变量数组,它的成员保存这个Bash实例的版本信息。

COLUMNS

select内建命令来决定打印选择列表时终端宽度。在收到SIGWINCH信号时自动设置。

COMP_CWORD

包含当前光标位置的字的${COMP_WORDS}的一个索引。An index into ${COMP_WORDS} of the word containing the current cursor position.

COMP_LINE

当前命令行。

COMP_POINT

指明相对于当前命令起点的当前光标位置。

COMP_WORDS

一个由当前命令行中单个词组成的变量数组。

COMPREPLY

一个变量数组,Bash从中读取由一个可编程完整设备调用的一个shell函数生成的可能的完成。An array variable from which Bash reads the possible completions generated by a shell function invoked by the programmable completion facility.

DIRSTACK

一个保存当前目录栈内容的变量数组。

CDPATH

一个由冒号分割的目录列表作为内建命令cd的搜索路径。

HOME

当前用户的home目录;默认为内建命令cd。这个变量的值同样被~扩展使用。

IFS

分割域的一个字符的列表;用于shell把词分开作为扩展。

MAIL

如果这个变量设成一个文件名并且MAILPATH变量没有设置,Bash在指定文件中通知用户邮件的到达。

MAILPATH

一个用冒号分隔的文件名列表,shell周期性地从这个文件里检测新邮件。

OPTARG

getopts内建命令处理的最后的选项参数的值。

OPTIND

最后一个由getopts内建命令处理的选项参数的索引号。

PATH

一个用冒号分隔的目录列表,shell从这些目录里寻找命令。

PS1

主要提示符。默认值是“'\s-\v\$ '”。

PS2

次要提示符。默认值是“'> '”。特殊Bash变量

字符

定义

$*

展开为位置参数,从1开始。当扩展发生在双引号时,它展开成一个单独的词,每个参数的值由IFS特殊变量的第一个字符分隔。

$@

展开为位置参数,从1开始。当在双引号里展开时,每个参数展开成独立的词。

$#

把位置参数展开为十进制数字。

$?

展开成最近执行的前台管道程序的退出状态。

$-

一个连字符展开为当前选项标志 内部命令集 或者那些shell自己的集(如-i)

$$

展开成shell的进程ID。

$!

展开成最近在后台(异步)执行的命令的进程ID。

$0

展开成shell或者shell脚本名。

$_

下划线变量在shell启动时设置,包含shell的绝对文件名或者作为参数列表被执行的脚本。随后,它展开为前一个命令扩展后的最后一个参数。它同样设置为每个执行程序的全路径,放在那个命令的输出环境中。当检查邮件时,这个参数保存邮件文件的名字。shell中的输入与输出

转义字符:“\”

避免下一个字符被shell解释

echo常见-n(禁用转义字符) -e(可以使用转义字符)

#!/bin/bash

echo

-e "this 3 lines\n\n\n"

echo

"ok"

echo

"enter you name:"

read

name

echo

"enter you password:"

read

password

echo

$name $passwordshell中的命令行替换

替换

语法

含义

历史

!

前一个命令行

大括号

{}

指定的文本

代字号

~username

用户的主目录

变量

$,${...}

shell和环境变量

算术

$((...))

算术运算

命令替换

`...`,$(...)

运行在子shell中的命令的输出

路径名

*,?,[...],[^...]

文件系统中匹配的文件名

shell命令行的扩展与替换-路径名替换

通配符

用于匹配的字符称为通配符,例如:

*匹配任意字符或字符串,包括空字符串

?匹配任意一个字符

[...]匹配方括号中列出的任何单字符

如:

ls /dev/ttyS*

ls test0?.txt

ls test[0-2].txt

ls test[012][0-9].txt

shell命令行的扩展与替换-命令替换

命令替换

命令替换允许一个命令的输出来替换这个命令本身。命令替换在一个命令这样封装的时候发生:

$(command)或`command` (老式语法)

如:

date=$(date)

echo $date

shell命令行的扩展与替换-单引号与双引号

单引号(‘’)用于保持在引号内的每个字符的字面值。

双引号保持引号内的所有字符的字面值,除了$,``,\

算术替换用于算术计算:$(())中的shell变量取值将换成整数,如:var=45echo $(($var+3))注意只能用+-*/和(),并且只能做整数计算。shell测试语句条件测试:test或者[ ]可以用test或者[ ]测试一个条件是否成立,如果测试结果为真,则该命令退出状态为0,如果为假,状态为1。通过echo$?来输出结果文件测试格式:test option file或者[ option file ]

-b file测试文件是否为块设备文件-c file测试文件是否为字符设备文件-d file测试文件是否为目录-ffile测试文件是否为普通文件-e file测试文件是否存在-r file测试文件是否可读-s file测试文件是否非空-w file测试文件是否为可写-x file测试文件是否可执行示例:test-d /home/jerryecho $?结果为0,说明jerry是一个目录-a:逻辑与,操作符两边均为真,结果为真,否则为假。-o:逻辑或,操作符两边至少一边为真,结果为真,否则为假。!:逻辑否,条件为假,结果为真。示例:判断主目录中的文件install.log是否同时具有写入和执行的权限。test -w install.log -a-x install.logecho $?整数比较格式:testint1operatorint2-eq数值相等。-ne数值不相等。-gt第一个数大于第二个数。-lt第一个数小于第二个数。-le第一个数小于等于第二个数。-ge第一个数大于等于第二个数。示例:test8-eq3echo $?字符串测试格式:test option string或者[option string]=两个字符串相等。!=两个字符串不等。-z测试字符串是空字符串。-n测试字符串是非空字符串。s1 = s2相等s1 != s2 s1与s2不同s1 < s2s1的ASCII在s2前s1 > s2    s1的ASCII在s2后If语句i f语句测试条件,测试条件返回真(0)或假(1)后,可相应执行一系列语句。简单的if语句是:i f条件then命令f i注意:使用i f语句时,必须将t h e n部分放在新行,否则会产生错误。如果要不分行,必须使用命令分隔符。

现在简单i f语句变为:if条件;t h e n命令f ii f语句其格式为:if条件1then命令1elif条件2then命令2else命令3f icase语句c a s e语句为多选择语句。

可以用c a s e语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。c a s e语句格式如下:case值i n模式1)命令1. . .;;模式2)命令2. . .;;e s a c取值后面必须为单词i n,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至;;取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号*捕获该值,再接受其他输入。模式部分可能包括元字符,与在命令行文件扩展名例子中使用过的匹配模式类型相同,

即:*任意字符。?任意单字符。[..]类或范围中任意字符。for循环f o r循环一般格式为:for变量名i n列表d o命令1命令2⋯d o n e当变量值在列表里,f o r循环即执行一次所有命令,使用变量名访问列表中取值。命令可为任何有效的s h e l l命令和语句。变量名为任何单词。i n列表用法是可选的,如果不用它,f o r循环使用命令行的位置参数。i n列表可以包含替换、字符串和文件名,下面看一些例子。#!/bin/bashfor char in ab c d edoecho $chardone

或者#!/bin/bash#example:for cyclefor strdoecho $strdone./example.sha b c d ewhile循环w h i l e循环用于不断执行一系列命令,也用于从输入文件中读取数据,其格式为:

while命令d o命令1命令2. . .d o n e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值