美文网首页
shell脚本语法小记

shell脚本语法小记

作者: 凌福义 | 来源:发表于2019-05-14 20:24 被阅读0次

  • 1、变量:字符串、数字、环境变量和参数
  • 2、条件:shell中的布尔值
  • 3、程序控制:if、elif、for、while、until、case
  • 4、命令列表
  • 5、函数
  • 6、shell内置命令
  • 7、获取命令执行结果
  • 8、 here文档

1、变量

如果一个$变量表达式放在双引号""中,则程序执行到此处会替换成变量值,如果放在单引号'',则不会发生替换现象,如果加上转椅字符\,则会原文输出取消其特殊含义

#!/bin/sh
var ="hello"
echo $val
echo "$var"
echo '$var'
echo \$var
echo enter some test
read var
echo '$var' now equals $var

输出结果如下图所示

./bash.sh
hello
hello
$var
$var
enter some test
hello world
$var now equals hello world

1.2、环境变量


$HOME:当前bash用户家目录
$PATH:以冒号分隔用来搜索命令的目录列表
$PS1:命令提示符,通常是字符,但在bash中可以使用更加复杂的值,比如字符串[\u@\h\W]就是一个流行的默认值,它给出了用户名、机器名以及当前目录名、也包括一个$字符

$PS2:二级提示符,提示后续输入,通常为>字符
$IFS:输入域分隔符,当shell提示输入时,给出用来分隔单词的一组字符
$0:shell脚本名称
$#:shell参数个数
$$:shell脚本进程号,脚本程序通常用其生成一个临时唯一文件,比如/tmp/tmpfiles_$$
$1,$2,$3:脚本第一个 第二个 第三个参数
$*:脚本所有参数,使用IFS将其分隔,如果IFS为空,则参数会挤在一起
$@:脚本所有参数,跟IFS无关(推荐使用)


2、条件

使用test或者[命令
条件测试分为3类:

  • 字符串比较
#字符串相同则结果为真
string1 = string2      
#字符串不同则结果为真
string != string2     
#字符串不为空则结果为真
-n string                    
#字符串为null则结果为真
-z string                    
  • 算数比较
#表达式结果相等则结果为真
val1 -eq var2
#表达式不相等则结果为真
var1 -ne var2
#var1 大于var2则结果为真
var1 -gt var2
#var1 大于或等于var2则结果为真
var1 -ge var2
#var1 小于var2则结果为真
var1 -lt var2
#var1 小于或等于var2则结果为真
var1 -le var2
#表达式为假则结果为真
! expression
  • 文件条件测试
#文件为目录
-d file
#文件存在则结果为真
-f file
#文件group id为真
-g file
#文件的user id为真
-u file
#文件可读
-r file
#文件可写
-w file
#文件大小不为0
-s file
#文件可执行
-x file

3、控制结构

  • if语句
if condition
then
  statements
else
statements
fi
  • for语句
    遍历输出a b c
#!/bin/bash
for val in a b c 
do 
echo $var
done

遍历输出/home下的所有.sh文件

#!/bin/bash
for file in $(ls /home/*.sh) 
do 
echo $file 
done
  • while语句和until语句
while condition
do
statements
done
############
until condition
do 
statements
done
  • case语句
#!/bin/bash
#单一匹配case
echo "please input yes or no'
read var
case "$var" in
yes) echo "var is $var";;
no) echo "var is $var";;
y) echo "var is $var";;
n) echo "var is $var";;
esac

##合并匹配case
case "$var" in
yes | y | Yes | YES) echo "var is $var";;
no |n | No | NO) echo "var is $var";;
esac
  • AND列表
    statements1 && statements2 && statements3
    从左到右执行命令列表,只有前面命令执行成功才执行下一条命令
if [ -f file1 ] && [ -f file2 ] && [ -f file3 ]
then
echo "file 1 2 3 is exist"
fi
  • OR列表
    statements1 || statements2 || statements3
    从左到右执行命令列表,只要一条命令成功为止,其后命令不在执行
if [ -f file1 ] || [ -f file2 ] || [ -f file3 ]
then
echo "file 1 2 3 someone is exist"
fi

4、函数

基本shell函数如下:

#!/bin/bash
foo(){
return 0
}
echo start
foo
echo end

5、命令

  • break:跳出for while until循环
  • (:):空命令
  • continue命令:直接跳到for while until下一次循环开始地方执行
  • (.)命令:用于当前shell执行命令
  • echo命令:shell的printf命令 ;echo -e去掉换行符
  • eval命令:对参数进行求值
  • exec命令:将当前shell替换成其他命令,且exec后续命令不再执行
  • exit n命令:退出脚本程序以退出码n结束运行
  • export命令:导出参数到子shell中,并使之咋子shell有效
  • expr命令:将命令作为表达式求值,较新的shell使用$((....))
x =`expr $x+1` 

相关文章

  • shell脚本语法小记

    1、变量:字符串、数字、环境变量和参数 2、条件:shell中的布尔值 3、程序控制:if、elif、for、wh...

  • 第1次课-Shell脚本语言-第1讲

    进入Shell语言基础学习? 1、第一个Shell程序? 2、Shell脚本语法->注释? 3、Shell脚本语言...

  • Unix/Linux shell入门

    一. 介绍 shell脚本,顾名思义就是跟执行shell命令、shell交互的脚本。由于历史原因,shell语法比...

  • shell 语法

    shell 语法如何抒写一个shell脚本shell脚本运行shell中的特殊符号管道重定向shell中数学运算脚...

  • shell入门学习(1)——语法基础

    本文为转载,原文:shell入门学习(1)——语法基础 介绍 Shell Script,Shell脚本与Windo...

  • shell脚本-基本语法

    前言 什么是shell脚本呢?shell脚本就是利用shell的功能所写的一个纯文本的程序,将一些shell的语法...

  • 认识几个Shell脚本语言

    以上是平时用到的一个shell脚本,其中的几个shell脚本学习: 1.if ... else 语句的语法: if...

  • Shell脚本语法

    一、使用结构化命令 1、使用if-then-elif-else语句 语句结构如下: 或 如果if后面的命令的退出码...

  • shell脚本语法

    shell文件创建 文件开始需要有标识行: 变量 定义变量时,变量名不加美元符号($),如: 注意,变量名和等号之...

  • Shell脚本语法

    1. Shell脚本简介Shell 脚本(shell script),是一种为 shell 编写的脚本程序。业界所...

网友评论

      本文标题:shell脚本语法小记

      本文链接:https://www.haomeiwen.com/subject/ydbynqtx.html