linux – 如何知道要使用的脚本标头及其重要性?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 如何知道要使用的脚本标头及其重要性?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1975字,纯文字阅读大概需要3分钟。
内容图文
![linux – 如何知道要使用的脚本标头及其重要性?](/upload/InfoBanner/zyjiaocheng/962/0fd5f8da2f454dbfb8131712ffd86a05.jpg)
我不经常为各种不相关的目的编写bash脚本,虽然我通常很清楚脚本中我想要什么命令,但我常常不知道使用什么标头或为什么我在找到它时使用它.举些例子):
>标准shell脚本:
>#!/ bin / bash
> Python:
>#!/usr/bin/env python
脚本似乎在没有标题的情况下工作正常,但如果标题是标准的,那么它们就有一个原因,它们不应该被忽略.如果它有效果,那么它是一个有价值的工具,可以用来完成更多.
最简单的说,我想知道MySQL脚本使用什么标头以及标题,Python和MySQL脚本的标题.理想情况下,我想要一个通用的标题列表或理解如何根据正在使用的程序创建标题.
解决方法:
内核如何执行事物
简化(有点),POSIX系统中的内核有两种方式知道如何执行程序.一,如果程序是内核理解的二进制格式(例如ELF),内核可以“直接”执行它(更多细节超出范围).如果程序是以shebang开头的文本文件,例如
#!/usr/bin/somebinary -arg
或者你有什么,内核实际上执行命令就像它被指示执行一样:
/usr/bin/somebinary -arg "$0"
其中$0这里是您刚刚尝试执行的脚本文件的名称. (所以你可以立即告诉为什么这么多脚本语言使用#作为评论启动器 – 这意味着他们不必将shebang视为特殊的.)
PATH和env命令
内核不会查看PATH环境变量来确定您正在讨论的可执行文件,因此如果您要将python脚本分发给可能安装了多个版本的python的系统,则无法保证会有
#!/usr/bin/python
然而,env是POSIX,所以你可以指望它存在,它将在PATH中查找python.从而,
#!/usr/bin/env python
将使用PATH中找到的第一个python执行脚本.
BASH,SH和调用的特殊含义
有些程序对它们的调用方式有特殊的语义.特别是,在许多系统上/ bin / sh是另一个shell的符号链接,例如/ bin / bash.虽然bash不包含sh的完美POSIXLY_STRICT实现,但当它被调用为/ bin / sh时,它比调用plain-old-bash时更严格.
MySQL和arg的局限性
shebang行可以是长度限制的,从技术上讲,它只能支持一个参数,所以mysql有点棘手 – 你不能指望将用户名和数据库名称传递给mysql脚本.
#!/usr/bin/env mysql
use mydb;
select * from mytbl;
将失败,因为内核将尝试mysql“$0”.即使您在.my.cnf文件中拥有凭据,mysql本身也会尝试将“$0”视为数据库名称.同样:
#!/usr/bin/mysql -e
use mydb;
select * from mytbl;
将失败因为再次,“$0”不是表名(你希望).
似乎没有适当的语法以这种方式直接执行mysql脚本.最好的办法是直接将sql命令传递给mysql:
mysql < my_sql_commands
内容总结
以上是互联网集市为您收集整理的linux – 如何知道要使用的脚本标头及其重要性?全部内容,希望文章能够帮你解决linux – 如何知道要使用的脚本标头及其重要性?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。