shell编程01【执行方式】
【摘要】
经常需要在Linux上操作,对应shell脚本来说应该还是要掌握的,所以最近打算将shell入门的相关的知识整理一下,以供大家查阅。
shell脚本
一、第一个shell脚本
创建一个以’....
经常需要在Linux上操作,对应shell脚本来说应该还是要掌握的,所以最近打算将shell入门的相关的知识整理一下,以供大家查阅。
shell脚本
一、第一个shell脚本
创建一个以’.sh’结尾的文件,并编译内容。
保存文件,创建成功
#!/bin/sh
第一行命令说明:
一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容,这一行内容在Linux bash的编程一般为:
#!/bin/bash
或
#!/bin/sh
注意:
-
在Shell中如果一行的第一个字母是#,则是注释,但是上面两个是写在第一行,所以不是脚本注释行,如果写在某个命令之后,则变成注释行。
-
sh为bash的软链接,大多数情况下,脚本的开头使用“#!/bin/bash”和“#!/bin/sh”是没有区别的,但更规范的写法是在脚本的开头使用“#!/bin/bash”。
二、执行的方式
序号 | 方式 | 特点 |
---|---|---|
1 | './'来执行 | 需要对文件授权,在当前父进程下的子进程中执行 |
2 | bash(sh)来执行脚本 | 不需要授权,在当前父进程下的子进程中执行 |
3 | source或( . )来执行 | 不需要授权,直接在父进程中执行 |
1. './'方式来执行
执行此脚本 s2.sh:
#!/bin/bash
name1=bobo1
echo "hello shell"
在没有授权的情况下执行如下:
[root@hadoop-node01 shellScript]# ./s2.sh
-bash: ./s2.sh: 权限不够
执行授权操作
chmod -u+x s2.sh
chmod 777 s2.sh
执行效果
2.bash来执行
执行此脚本 s3.sh:
#!/bin/bash
name2=bobo2
echo "hello shell"
不需要授权,可以直接执行
注意
以上两种方式都是在父进程的子进程中执行的。子进程完成后,子进程中的各项变量或操作将会结束而不会传回到父进程中。比如我们在脚本中声明的变量name1和name2,我们在父进程中就获取不到,如下
可以看到,执行后再看脚本中两个变量,在父进程中不起作用!
3.source或者小数点来执行
执行此脚本 s4.sh:
#!/bin/bash
name3=bobo3
echo "hello shell"
执行命令效果如下:
注意
这种方式是直接在父进程中执行了,我们可以看到脚本中声明的变量信息
总结
直接执行与用source命令执行的区别,前者只作用于子进程本身,后者则作用于整个父进程。因此:如要想不注销系统,并让全局配置文件生效,则必须用source命令:
比如说: 在全局配置文件中/etc/profile添加了JAVA_HOME,要让他对整个环境生效
export JAVA_HOME=/usr/java/jdk1.8
就必须执行 source /etc/profile
文章来源: dpb-bobokaoya-sm.blog.csdn.net,作者:波波烤鸭,版权归原作者所有,如需转载,请联系作者。
原文链接:dpb-bobokaoya-sm.blog.csdn.net/article/details/88914552
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)