『Shell编程』学习记录(1)

例1.

$ cat ex1
date
pwd
cd ..

$ bash ex1

# 运行,显示当前日期和当前目录,但没有执行返回上级目录,因为执行的时候终端会产生一个子shell(类似于C语言调用函数),子shell去执行我的脚本,在子shell中已经切换了目录了,但是子shell一旦执行完,马上退出,子shell中的变量和操作全部都收回。回到终端根本就看不到这个过程的变化。

 

例2.

$ cat ex2
#!/bin/bash
# If no arguments, then listing the current directory.
# Otherwise, listing each subdirectory.
if  test  $# = 0
then  ls  .
else
    for  i
    do
      ls  -l  $i | grep  '^d'
    done
fi

①.

$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

②.test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

③.fi 结束if语句

④.ls(选项)(参数)

参数:指定要显示列表的目录,也可以是具体的文件。

⑤.grep  '^d'

正则表达式

^ (Caret) = match expression at the start of a line, as in ^A.
$ (Question) = match expression at the end of a line, as in A$

⑥.符号含义

" / " :根目录

" ~ " :用户主目录的缩写。例如当前用户为hello,那么" ~ "展开来就是:/Users/hello

" . " :当前目录

".." :父目录

 

# 运行,不带参数则列出当前目录,带参数则列出参数指定目录或文件(文件名开头匹配d的)

 

posted @ 2019-03-18 17:56  学优  阅读(199)  评论(0编辑  收藏  举报