【学习笔记】shell(一)

1.执行方式

在这里插入图片描述

bash ./test.sh 不需要给此脚本赋予可执行权限就可以进行执行,需要有可执行权限,chomd u+x 文件名
./test.sh 需要给此脚本赋予可执行权限
两者执行会产生一个新的进程,不会对父进程产生影响

source 和 .filename.sh 不会产生新的进程,直接在此进程进行执行。对当前shell脚本产生影响

2.管道

1. 管道符'|': 将第一个的输出结果作为第二个应用程序的输入       三个的话以此类推
     如:cat  test.txt |  more     即分页展示text.txt的内容

3.重定向

输入重定向:是指不使用系统提供的标准输入端口,而进行重新的指定。换言之,输入重定向就是不使用标准输入端口输入文件,而是使用指定的文件作为标准输入设备。(重定向简单理解就是使用 “<”符来修改标准输入设备)
在这里插入图片描述

输出重定向:(通俗的讲,重定向输出就是把要输出的文件信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏))
在这里插入图片描述

">"将123输入到文件file中,将原来file的中内容先清空,在输入123
“>>”将123输入到文件file中,但是不清空原数据,在后追加123
“2>”如果echo 123 命令产生错误,则将错误的内容输出放在file中
“&>”错误和正确内容都输出到file中
在这里插入图片描述
将a.txt中的东西放到var2中,然后用echo 查看此变量
在这里插入图片描述
将变量var2输出到文件b
在这里插入图片描述
如nocmd不是一个命令,可以使用2>将错误信息输出则使用 nocmd 2> 1.text

4.变量

在这里插入图片描述
a=123 之间不要用空格,否则会认为是命令
注意:尽量不要使用shell进行计算,因为其性能会很慢

1.还可以将命令的结果赋值给变量 (如一个命令过于复杂,且多次使用,可以将结果放到一个变量中去) 如:lect=$(ls -l) 还可以写成 两个单引号如图
在这里插入图片描述
2. 因为变量中不能有空格,则遇到的字符串需要空格则需要用双引号括住,比如a=“hello bash” 如果本身有双引号了 需要再次括住 则用单引号,反之亦然。
在这里插入图片描述

5.变量作用域

两个shell脚本
下面展示一些 代码a.sh

name=huazi
ehco ${name}
./b.sh

下面展示一些 代码b.sh


ehco "name in b.sh"${name}

直接输出则结果是


huazi
name in b.sh

b是a的子进程,子进程不能访问到父进程进程的数据,可以在 a.sh中变量name前加上export,则子进程可以访问到

下面展示一些 a.sh

export name=huazi
ehco ${name}
./b.sh

再次执行a.sh

huazi
name in b.sh:huazi  

脚本a中export的变量在启动其他脚本的时候会复制一份传入其他脚本,传入的值是调用其他脚本的时的值。并不是export时的值。 在脚本A中定义了一个变量V赋值为1,export了变量V,然后修改V为2,在脚本A中启动脚本B,在脚本B中变量V的值就是2。

父进程想访问子进程的东西
下面展示一些 a.sh

name=huazi
echo ${name}
source ./b.sh
echo  'a in' ${name}
echo 'b in name1'${name1}

下面展示一些 b.sh

echo "name in b.sh:"$name
name1=miaozi
echo "b in"$name1

结果

huazi
name in b.sh:huazi
b inmiaozi
a in huazi
b in name1miaozi

使用source 使用source 执行代码即是在本进程执行,而./a.sh是另开辟一个子进程执行。共享一个进程则可以共享一个变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值