D11
1. Shell脚本的第一行"#!"
#!(Shebang)出现在Shell脚本文件第一行的前两个字符,用于指示一个解释程序。
语法:#! INTERPRETER [OPTION]...
注意:INTERPRETER必须是一个程序的绝对路径。
在Linux系统中,但内容以#!开头的脚本作为一个程序运行时,程序加载器会将脚本第一行的#!之后的内容解析为一个解释程序,然后用这个指定的解释程序替代其运行,并将脚本的路径作为第一个参数传递给解释程序。
如:一个脚本的路径为/path/to/script,其内容的开头:
#!/bin/bash
则/bin/bash作为解释程序,运行/path/to/script
几乎所有脚本都是以“#!/bin/bash”开头的,如果不指定,默认用“/bin/sh”作为解释程序,但还是推荐将Bash脚本的第一行设为“#!/bin/bash”。
2. Shell中的注释
Shell脚本中"#"是注释标识符。脚本某行以“#”开头或包含“#”(除了$#)则这一行的#之后的内容都被解释程序忽略,称为注释。
#!/bin/bash #test cron #2020-05-18 echo $(date) >> time.log
还可以使用Bash的HERE DOCUMENT特性添加多行的注释内容。如:
#!/bin/bash <<COMMENT test cron
2020-05-18 COMMENT echo $(date) >> time.log
3. 如何设置脚本的权限和执行脚本
1)执行权限
Shell脚本文件不具有执行权限,执行时报错:
$ ./echotime.sh -bash: ./echotime.sh: Permission denied
添加权限采用chmod命令
$ chmod u+x echotime.sh #为所有者添加执行 $ chmod +x echotime.sh #给所有用户添加执行权限
2)执行路径
$ /home/user1/20200511study/echotime.sh #使用绝对路径运行 $ cd /home/user1/20200511study/ $ ./echotime.sh #使用相对路径运行
将Shell脚本所在目录的路径添加到PATH环境变量,则可以在任何路径下直接运行该目录下的Shell脚本:
$ export PATH=$PATH:/home/user1/20200511study/ $ cd /tmp $ echotime.sh