shell基本语法

1、变量

定义一个变量:varname=value,等号两边不能有空格,否则会被解释成命令。

变量分为本地变量和环境变量。本地变量只存在于当前的shell进程,而环境变量

可以从当前进程传递给fork出来的子进程。printenv可以打印出当前进程的环境变量。

用export可以将本地变量导出成环境变量。用unset可以删除变量。

 

2、命令代换

可以用`和$()进行命令代换。如:

birth=`date`或birth=$(date)

 

3、算术代换$(())

var=45

echo $(($var+3))

 

4、转义字符/

这个/没什么好说的,各种语言都有,不过在shell里有个特殊的地方。
其中“-”加上转义字符也不行,如果要创建一个-hell的文件,你需要这么做
touch ./-hello

 

5、交互登录的shell

就是输入用户名和密码后得到的shell。

进入登录shell后会执行一系列文件:

/etc/profile、~/.bash_profile、~/.bash_login、~/.profile

在退出时候要执行~/.bash_logout

 

6、交互非登录的shell

在图形界面打开一个终端或者在登陆shell中执行bash命令,就得到一个交互非登录的shell。
这种shell在启动时自动执行~/.bashrc。
一般在bashrc里面设置本地变量、函数、alias。

 

7、非交互启动的shell
为执行脚本而fork出来的是非交互shell。

它会执行 BASH_ENV这个环境变量指定的文件。
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi

 

8、条件测试

可以用test或[进行条件测试,如果测试结果为真就返回0,如果为假就返回1。

测试两个数的大小:

[是一个命令,传递给它的参数都用空格分开。

常见的测试命令如下:

[ -d dir ] :如果dir存在,返回真

[ -f filename ] :如果filename这个文件存在,就返回真

[ -z string ] :如果string为空返回真

[ -n string ] :如果string不为空返回真

[ string1 = string2 ] :如果相等返回真

[ string1 != string2 ] :如果不相等返回真

[ arg1 OP arg2 ] :OP可以是-gt/-lt/-ge/-le/-eq/-ne中的任意一个。

 

其他语言常用的!、and、or在shell里面这么表示:

[ ! exp ]

[ exp1 -a exp2 ]

[ exp1 -o exp2 ]

举个例子:

[ -d test -a “$var”="abc" ]

其中$var一般要用引号引起来,否则容易引起错误。原因是,如果var为空的话,这句会被

解释成这样:[ -d test -a ="abc" ],这显然有语法错误,但是加上引号就会被解释成这样:

[ -d test -a ""="abc" ]这样无论如何都不会有语法错误了。

 

9、if语句

if语句常常包含以下关键词: if、then、 else、elif、fi。

if [ -f ~/.bashrc ]是一条,then . ~/.bashrc、fi各是一条。如果两条写在一块,就要用“;”分割。

:是一个空命令,表示什么也不执行。

 

10、case语句

 

11、for/do/done

 

12、while/do/done

 

13、位置参数和特殊变量

$0:文件名

$#:参数个数

$@:参数列表,不包括$0

$?:上一次命令执行是否成功的标志

$$:进程id

 

14、函数

调用函数时可以传递任意个参数,在函数内提取参数用$0/$1....

下面这个脚本可以一次创建多个目录,各目录名通过命令行参数传入,脚本逐个测试各目录是否存在,如果目录不存在,首先打印信息然后试着创建该目录。



15、脚本的调试

sh -x ./test.sh:这样可以将执行的每一条命令和结果打印出来。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值