Skip to content

prog_002

Zhang Jc edited this page Mar 30, 2017 · 6 revisions

Shell Script常用语法

特殊变量

http://c.biancheng.net/cpp/view/2739.html

变量 含义
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。$0表示当前脚本的文件名
$# 传递给脚本或函数的参数个数。
$* 以整个字符串的形式,传递给脚本或函数的所有参数。
$@ 以列表的形式名,传递给脚本或函数的所有参数。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

Shell脚本中进行多行注释的方法

shell 脚本貌似不像C或者Python一样自带注释语法,还是有一些方法的:

  • 方法1

利用了逻辑语句的执行顺序,缺点是注释中不能出现括号。

###逻辑或前如果为真,后边的语句块自动不执行
#1
:||{
 注释内容...
}
#2
((1))||{
 注释内容...
}
#3
true||{
 注释内容...
}
###逻辑与前如果为假,后边的语句块自动不执行
#4
((0))&&{
 注释内容...
}
#5
false&&{
 注释内容...
}
  • 方法2

利用了shell脚本的here documents的语法,注意<<后边是自己命名的,做到前后呼应即可,如下为两例,但是我测试的几种命名只有例1中的方法没有什么缺点,在例二或者其他命名中,如果出现反单引号`则可能会报错!

#e.g. 1
:<<''
 注释内容...
''
#e.g. 2
:<< BLOCK
 注释内容...
BLOCK
  • 方法3

如果是使用vim编辑,利用sed语法,vim中的normal模式下:

#全文注释:
:0,$ s/^/#/

#m到n行注释:
:m,n s/^/#/

#全文去注释:
:0,$ s/^#//

#m到n行去注释:
:m,n s/^#//

关于变量

1.使用变量的格式

  • 对变量赋值时,注意直接用变量名就好,且等号两边不加空格。

  • 使用变量时,格式为$后紧跟变量名,或者$后紧跟加过花括号的变量名,花括号更利于程序明确区分变量名的边界。例如:

脚本:
#!/bin/bash

var1=hello

echo $var1 123
echo $var1123
echo ${var1}123

运行后输出:
hello 123

hello123

2.awk如何给shell变量赋值

利用 `shell命令` 即可这个语法即可

e.g.

#!/bin/bash
VAR1=`echo hello world!|awk '{printf "%s\n", $1}'`
echo $VAR1

结果会输出

$ hello
Clone this wiki locally