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"。