zoukankan      html  css  js  c++  java
  • Python——Shell编程关于Sha-Bang(#!)

    Q. #!的名字为什么叫Sha-Bang?

    A. Sha-Bang是Sharp和Bang的组合词。Sharp for #, Bang for ! 类似的情况是,C#通常被称为C Sharp

    Q. Sha-Bang(#!)是不是注释?

    A. 不是注释。Sha-Bang(#!)所在行的作用是告知该脚本使用的是哪种命令解释器,并不是可有可无的。虽然很多情况下省略了Sha-Bang(#!)仍然能够运行脚本,这是由于系统在这种情况下是默认使用了当前命令行解释器的

    Q. Sha-Bang(#!)的编写有什么规范?

    A. Sha-Bang(#!)应该位于脚本的第一行,并且顶格填写,否则都是错的,即使Sha-Bang之前的内容都是注释,这种错误是常见的,而且不易发现的,因为此时Sha-Bang(#!)所在行实际上是不起效的,系统使用了默认的命令行解释器

    Q. Sha-Bang(#!)在同一个脚本中可以出现几次?

    A. 只有第一行的Sha-Bang(#!)会生效,其余的会视为注释

    Q. 为什么推荐这种写法:#!/bin/env perl?

    A. 因为这是有利于移植脚本到其它平台的写法,解释器的默认安装路径在各个操作系统是不太一样的,有的是/bin/,有的是/usr/bin/,甚至有可能是用户自定义的路径,使用env就基本上能够通用了。虽然env也有可能在/bin/或者/usr/bin/中,但通常的情况是在这两个路径下都有env,或者其中一个是另一个的符号链接

    最后提醒一下,有时候设定的cronjob异常,但是命令行能够执行成功,请先检查一下Sha-Bang(#!)是否合法,然后检查是否缺少了必须的环境变量,命令行能够执行成功可能是利用了默认的命令行解释器和环境变量。

  • 相关阅读:
    机器学习概要
    Latex公式压缩
    MATLAB多项式运算
    利用MathType为公式编号并引用
    MATLAB符号对象与符号运算
    MATLAB矩阵运算
    MATLAB绘制函数图
    MATLAB程序控制语句
    MATLAB关系运算符和逻辑运算符
    Raspberry pi之wifi设置-3
  • 原文地址:https://www.cnblogs.com/Simon-xm/p/4337828.html
Copyright © 2011-2022 走看看