shell脚本开头
shell文件开头
#!/bin/sh
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/tcl
#!/bin/sed -f
#!/usr/awk -f
每个脚本的开头都使用"#!",这意味着告诉你的系统这个文件的执行需要指定一个解释器。在#!之后接着是一个路径名。这个路径名指定了一个解释脚本中命令的程序,这个程序可以是shell,程序语言或者是任意一个通用程序。这个指定的程序从头开始解释并且执行脚本中的命令(从#!行下边的一行开始),忽略注释。
变量与参数
shell脚本中,定义变量如:varname = ‘name’,使用时变量名前加$,如:echo “the var is $varname”。
从脚本文件外部传入参数时,$1,$2,$3…分别表示传入的第1,2,3…个参数;而$0表示的是当前脚本文件名称。
chmod
执行shell脚本时,有时会提示权限不足,此时需要更改脚本文件权限,命令:chmod 777 filename
三个数字7分别对应不同用户权限值:文件所有者、群组用户、其他用户。
文件或目录的权限又分为3种:读(4)、写(2)、执行(1)。
权限 |
权限数值 |
二进制 |
具体作用 |
r |
4 |
00000100 |
read,读取。当前用户可以读取文件内容,当前用户可以浏览目录。 |
w |
2 |
00000010 |
write,写入。当前用户可以新增或修改文件内容,当前用户可以删除、移动目录或目录内文件。 |
x |
1 |
00000001 |
execute,执行。当前用户可以执行文件,当前用户可以进入目录。 |
Shell脚本中的单/双引号,反引号,反斜杠
- 单引号:单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
- 双引号:双引号里可以有变量;双引号里可以出现转义字符。
- 反引号:用于将一个命令的输出,插入到另一个命令行中。如:echo the path is `pwd`,它将pwd命令输出插入到echo命令中。也可写作echo the path is $(pwd),$(...)格式受到POSIX标准支持,也利于嵌套。
- 反斜杠:反斜杠一般用作转义字符,或称逃脱字符,Linux如果echo要让转义字符发生作用,就要使用-e选项,且转义字符要使用双引号。如:echo -e "\n"。