SHELL 的语法

n  变量:字符串,数字,环境和参数

n  条件:shell中的布尔值

n  程序控制:if, elif, for, while until, case

n  命令列表

n  函数

n  shell 内置命令

n  获取命令执行结果

n  here文档

变量

变量不需要事先为它声明。默认情况下所有的变量都被看作字符串来存储。

区分大小写

名字前加$字符提取变量

如果字符串包含空格,必须用引号把他们括起来。等号两边不能有空格。

可以用read命令将用户的输入赋给一个变量。

使用引号

脚本参数以空白符分隔(空格,制表,换行)。如果参数中有空白符,必须加上引号

如果$变量在双引号中,会取其值。如果单引号不会发生替换。

环境变量
$HOME, $PATH $PS1 命令提示符,通常是$. $PS2,二级提示符通常是>字符。
$IFS 输入域分隔符。 $S0 脚本的名字。$#传递给脚本的参数个数。
$$脚本的进程号

参数变量

$1,$2,... 脚本程序的参数

$* 所有参数,用IFS分隔。 $@,
一中变体,不使用IFS分隔

条件 test 或 [

if test -f fred.c

then

...

fi

if [ -f red.c]

then

...

fi

字符串比较

string1 = string2

string1 != string2

-n string 如果字符串不为空则结果为真

-z string 如果字符串为null 则结果为真

算术比较

expression1 -eq expression2 相等

expression1 -ne expression2

expression1 -gt expression2 大于

expression1 -ge expression2 大于等于

expression1 -lt expression2 小于

expression1 -le expression2 小于等于

!expression 取反

文件测试

-d file 文件是目录为真

-e file 文件存在
通常使用-f

-f file 普通文件

-g file set-group-id 被设置

-r file 可读

-s file 大小不为0

-u file set-user-id 被设置

-w file 可写

-x file 可执行

控制结构

if 语境

if condition

then

satements

else

statements

fi

if condition

then

satements

else

statements

elif condition; then

statements

then

statements

fi

For 语句

for variable in values

do

statements

done

for与通配符联合使用

for file in $(ls f*.sh); do

lpr $file

done

请记住,shell脚本程序中所有的变量扩展都是在脚本程序执行时被执行的,而不是在编写时完成对。所以变量中的语法错误只有在执行时才会被发现。

while 语句

while condition do

statements

done

whle ["$trythis" != "secret" ]; do

echo
"sorry, try again"

read trythis

done

until 语句

until condition

do

statements

done

until who | grep "$1" > /dev/null

do

sleep 60

done

你设置一个报警,当某个特定用户登录,该报警就会启动。

case 语句

case variable in

patten [ |
patten] ...) statements;;

patten [ |
patten] ...) statements;;

...

esac

#! /bin/sh

echo "Is it morning? Please answer yes or no"

read timeofday

case "$timeofday" in

yes ) echo
"Good morning";;

no ) echo "Good
Afternoon";;

* ) echo
"Sorry, answer not recognized";;

esac

exit 0

case "$timeofday" in

yes | y | YES
| Yes ) echo "Good morning";;

no | n* | N*
) echo "Good Afternoon";;

* ) echo
"Sorry, answer not recognized";;

esac

And 列表

statement1 && statement2 &&
statement3&& ...

Or 列表

statement1 || statement2 || statement3 || ...

语句块

{}

函数

function_name(){

statements

}

命令

break;

: 空命令。偶尔被用于简化条件逻辑,相当于true的一个别名。while : 无限循环

也会用于条件设置中 : ${var := value}

continue

(.)命令用于在当前shell 中执行命令

. ./shell_script

eval 命令
运行你对参数进行求值

exec 命令
有两种不同的用法,典型的用法是将当前shell替换为一个不同的程序。

exec wall "Thanks for all the fish"

exec 第二种用法,修改当前文件描述符

exec 3 < afile。 使文件描述符3被打开,以便从afile 读取数据

exit n

126 文件不可执行

127 命令未找到

128 以上 出现一个信号。

export 命令

export 将作为它的参数的变量到处到子shell中。
并使之在子shell中有效。默认情况下在shell中创建的变量在这个shell调用的下级(子)shell中是不可用的。

set -a 或 set -allexport 命令将导出它之后声明的所有变量。

expr命令

将它的参数当作一个表达式求值。

x = 'expr $x + 1'

x = $(expr $x + 1)

表达式求值

expr1 | expr2 expr1非0 则等于expr1 ,否则expr2

expr1 & expr2 有一个表达式为0则0,否则等于expr1

expr1 = expr2 等于

expr1 > expr2 大于

>  >=  < 
<=  !=  + 
-  *  /  %

Set 命令
为shell设置参数变量

Shift 命令
把所有参数变量左移一个位置

trap 命令
指定接收到信号后将要采取的行动。

unset 命令,
从环境中删除变量或函数

find grep

shell 的语法的更多相关文章

  1. Shell函数语法

    Shell函数语法 定义函数: function   函数名(){ 指令... } 调用函数,方法1: 函数名 调用函数,方法2: 函数名  参数一   参数二 return在函数里面使用会跳出函数并 ...

  2. shell脚本语法基础汇总

    shell脚本语法基础汇总 将命令的输出读入一个变量中,可以将它放入双引号中,即可保留空格和换行符(\n) out=$(cat text.txt) 输出1 2 3 out="$(cat te ...

  3. 运维shell全部语法进阶

    Linux运维之shell脚本进阶篇 一.if语句的使用 1)语法规则 1 2 3 4 5 6 7 8 9 if [条件]     then         指令 fi 或 if [条件];then ...

  4. U-Boot shell脚本语法

    /********************************************************************** * U-Boot shell脚本语法 * 说明: * 之 ...

  5. (转)shlex — 解析 Shell 风格语法

    原文:https://pythoncaff.com/docs/pymotw/shlex-parse-shell-style-syntaxes/171 这是一篇协同翻译的文章,你可以点击『我来翻译』按钮 ...

  6. shell 基础语法

    shell 基础语法 =============================================== 推荐:http://c.biancheng.net/cpp/shell/ ==== ...

  7. Shell脚本语法---在Makefile等文件…

    1. Shell脚本语法 1.1. 条件测试:test [ 命令test或[可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Sta ...

  8. Shell的语法

    Shell的语法: 变量:字符串.数字.环境和参数: 条件:shell中的布尔值: 程序控制:if.elif.for.while.until.case: 命令列表: 函数: Shell内置命令: 获取 ...

  9. shell基本语法备忘

    1.第一行要写明shell种类 #!/bin/bash   2.打印输出 #!/bin/bashecho "Hello World !~"   3.变量定义 变量=前后不能有空格, ...

随机推荐

  1. linux之du命令

    du命令:disk usage,顾名思义,是关于目录使用情况的.对了- 它的作用就是计算目录大小的. 1. 想看当前目录下所有目录以及子目录的大小: # du -h . “.”代表当前目录下.也可以换 ...

  2. ssh命令:使用密钥文件进行登陆

    在win上面可以使用XSHELL来登录类似于亚马逊这样的安全服务器,在mac上面就可以使用系统自带的命令工具来连接 1.使用命令 ssh -i key.pem [server] 如下: ssh -i  ...

  3. (转) Reinforcement Learning for Profit

    Reinforcement Learning for Profit July 17, 2016 Is RL being used in revenue generating systems today ...

  4. Introduction to Monte Carlo Tree Search (蒙特卡罗搜索树简介)

    Introduction to Monte Carlo Tree Search (蒙特卡罗搜索树简介)  部分翻译自“Monte Carlo Tree Search and Its Applicati ...

  5. JSBinding + SharpKit / 原理篇:Delegate

    以 NGUI 的 UIEventListener 为例: 有一个类: using SharpKit.JavaScript; using UnityEngine; using System.Collec ...

  6. javascript error

    IE 6下expected identifier,string or number(缺少标示符.字符串或数字)其实就是多了一个逗号,之前没发现

  7. cookies的理解

    设置cookie 每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie: document.cookie="userId=828"; 如果 ...

  8. android向web提交参数的4种方式总结,附带网站案例源码

    第一种:基于http协议通过get方式提交参数 1.对多个参数的封装 public static String get_save(String name, String phone) { /** * ...

  9. 安装pgadmin3

    在centos/redhat/系统是x86_64 1.下载适合自己系统的合适的版本http://dl.fedoraproject.org/pub/epel/6/x86_64/ ( yum instal ...

  10. c#, 输出二进制

    int x=-17; string str= Convert.ToString(x,2);Debug.Log(str); 输出结果: 11111111111111111111111111101111 ...