shell脚本学习笔记

[b]因为工作需要写一个小的shell脚本,很多年前写过,但是后来又把语法全都忘记了,趁这次机会重新学了一遍,找了些资料。先记下来,免的以后又忘记了
1.name=”” ;变量的赋值在=两边不能存在空格
2.可以使用的变量 $1 代表第一个参数,同理$2,$3分别代表之后的多个
$#:代表共有多少个参数
bash中提供了一个变量 “$@”代表所有的参数
for thing in “$@”;do
echo $thing;
done
总介:

$0        相当于C语言main函数的argv[0]
$1、$2...        这些称为位置参数(Positional Parameter),相当于C语言main函数的argv[1]、argv[2]...
$#        相当于C语言main函数的argc - 1,注意这里的#后面不表示注释
$@        表示参数列表"$1" "$2" ...,例如可以用在for循环中的in后面。
$?        上一条命令的Exit Status
$$        当前Shell的进程号

3.if 的使用特别需要主要

 if [ $# -gt 4];then

 fi;

if 和 [ 之间一定要有空格,[]之内的参数也需要有空格

4.对于字符串的复制
var1=””
var1=”$var1 new”
这个时候得到的就是新的值

5.引号(单引号和双引号)可以防止通配符*的扩展:
若是目录下存在一些jpg格式的图片:aa.jpg , bb.jpg
echo “*.jpg”
echo ‘*.jpg’
得到的结果就是:
*.jpg
*.jpg

6.其中单引号更严格一些,它可以防止任何变量扩展;而双引号可以防止通配符扩展但允许变量扩展:
echo $SHELL
echo “$shell”
echo ‘$shell’
得到的结果是;
/bin/sh
/bin/sh
$shell

7.脚本的调试
最简单的调试方法当然是使用echo命令。你可以在任何怀疑出错的地方用echo打印变量值,这也是大部分shell程序员花费80%的时间用于调试的原因。Shell脚本的好处在于无需重新编译,而插入一个echo命令也不需要多少时间。

sh -n your_script
-n
读一遍脚本中的命令但不执行,用于检查脚本中的语法错误,这个命令会返回所有语法错误。

sh -v strangescript
-v
一边执行脚本,一边将执行过的脚本命令打印到标准错误输出
sh -x strangescript
-x
提供跟踪执行信息,将执行的每一条命令和结果依次打印出来

8.不同的运算符
具体可参见附件中的图片,暂时还不知道怎么直接把图片放在文中!好悲剧


一定要注意 字符串比较用
if [ “$myvar” = “foo bar coo” ]
若是不加“”的话,如果传进来的 参数是 foo bar coo 那么就会变成

if [ foo bar coo = “foo bar coo” ]

就不会进入该分支进行执行了。

10.函数的使用

vi f2.sh;

#!/bin/bash

fun2 () {

  _var1=$1;     #这里的$1就是传入的第一个参数,shell脚本中参数都是在函数命令后面介入,不是在括号中传入的风格

  echo $_var1;
}

fun2 haha

sh f2.sh
那么输出的结果就是
haha

作者: inter12

在这苦短的人生中,追求点自己的简单快乐

发表评论

电子邮件地址不会被公开。 必填项已用*标注