shell变量

shell执行

#!/bin/bash    #shebang指定解释器

执行方式

lang@liang:~/linux/shell$ chmod u+x test.sh
lang@liang:~/linux/shell$ ./test.sh

lang@liang:~/linux/shell$ /bin/bash ./test.sh

lang@liang:~/linux/shell$ . ./test.sh

lang@liang:~/linux/shell$ source ./test.sh

对比,前两种方式执行方式实质一样,后两种实质相同

shell执行过程解释:

lang@liang:~/linux/shell$ ls

1.当前shell   fork产生子进程,子进程exec执行ls.

2.父进程(shell) wait等待子进程执行ls(exec)

3.子进程运行成功或者终止,父进程恢复运行.

对于后两种方式   .   ./ls      source ls

父进程直接在当前shell下执行命令,然后返回

其他问题:

将命令用(),引起来,那么shell 会直接fork出子shell来执行()中的命令.且可以多个命令;分割.

cd .. ; ls -l

特别强调

因为shell默认执行是fork--exec执行命令.

那么,我们在脚本中的cd .. 等改变状态的命令影响的只是子进程环境,并不改变父进程.

此时,如果有需求,那么.可以以  source执行  脚本

shell变量

命令

env

set

printenv

打印当前环境变量.

本地变量,只存在于当前shell,set命令显示当前shell定义的所有变量(本地变量以及环境变量)

shell中定义本地变量

VARNAME=value

export VARNAME  将本地变量导出为环境变量

unset VARNAME 删除本地变量或者环境变量

变量引用

shell变量都是字符串.对变量的引用使用$符号.

字符串拼接能力

lang@liang:~/linux/shell$ echo $SHELL

/bin/bash

lang@liang:~/linux/shell$ echo $SHELLaaa

lang@liang:~/linux/shell$ echo ${SHELL}aaa

/bin/bashaaa

变量名代换*  ? []

通配符 * :匹配0或多个任意字符

?:匹配一个任意字符

[若干字符]:匹配[]中的任意一个字符的一次出现

命令带换: `  或者 $()

lang@liang:~/linux/shell$ DATE=`date`

lang@liang:~/linux/shell$ echo $DATE

2016年 08月 15日 星期一 19:29:23 CST

lang@liang:~/linux/shell$ DATE=$(date)

lang@liang:~/linux/shell$ echo $DATE

2016年 08月 15日 星期一 19:30:20 CST

转义字符

lang@liang:~/linux/shell$ touch \$\ \$

lang@liang:~/linux/shell$ ll

-rw-rw-r-- 1 lang lang    0 8月  15 19:32 $ $

创建文件名 以 -  开头时可以如下处理

lang@liang:~/linux/shell$ touch ./-hell

lang@liang:~/linux/shell$ ll ./-hell

-rw-rw-r-- 1 lang lang 0 8月  15 19:32 ./-hell

lang@liang:~/linux/shell$ touch -- -lll

lang@liang:~/linux/shell$ ll

-rw-rw-r-- 1 lang lang    0 8月  15 19:35 -lll

单引号

shell脚本中单引号都可以界定字符串.而非字符,shell中单引号内的所有字符保持字面值.

双引号

双引号用于保持引号内suuoyou字符的字面值.(回车也不例外).除了以下

$变量值

``仍然表示命令替换

\$表示$的字面值

\代表转义.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文转载自Hello,Barry的shell变量详解1 shell变量基础shell变量是一种很“弱”的变量,默认...
    hchencoder阅读 367评论 0 2
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,571评论 9 467
  • 定义变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: 注意,变量名和等号之间不能有空格,这可...
    枫海阅读 215评论 0 1
  • 变量的定义 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规...
    孤月环舟阅读 272评论 0 0
  • 变量定义 定义变量时,变量名不加美元符号,如:variableName="value" 变量名和等号之间不能有空格...
    zjunchao阅读 403评论 0 0