Bash常用命令

最近在看flink源码,flink的启动脚本都是bash,所以顺带简单温习了下bash的语法.

一、入门

下面是一个简单的bash程序:

#!/bin/bash 
# this is a demo
str="Hello World" 
echo $str
  • 第一行#! 是说明当前个文件的类型的,Linux 系统根据 “#!” 及该字串后面的信息确定该文件的类型。
  • #后面是注释(上面那种情况除外)
  • bash中的变量不能包含保留字,比如**-**;也不能包含空格
  • 变量在使用前不需要定义
  • 变量赋值的时候:等号左右两边不能有空格
  • bash每条语句结尾都不需要**;**
  • 除了在变量赋值,以及在FOR循环语句头中,BASH中必须在变量前加"$"符号才能获取到对应变量的值。赋值很好理解,下面是一个for循环案例(来自flink启动脚本):
for ((i=0;i<${#MASTERS[@]};++i)); do
        master=${MASTERS[i]}
        webuiport=${WEBUIPORTS[i]}

其中i就是在for循环头里面

  • bash程序运行:文件开头的/bin/bash指定了文件类型和解释器,所以一般通过给bash文件加可执行权限(sudo chmod +x 文件名),之后通过./文件名运行即可
  • BASH 程序是在一个新的进程中运行的,所以该程序中的变量定义和赋值不会改变其他进程或原始 Shell 中同名变量的值,也不会影响他们的运行。
  • 引号中的字符被视为字符串,不会当做变量处理
  • {}中的字符也是被当做字符串处理

二、命令

  • let:let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上$来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来。比如:
i=1
let i=i+10 #表达式中没有空格,则带计算的表达式不用引号括起来

存在空格的时候:

i=1
let "i = i + 10"

此时不加""会报错

  • expr
#! /bin/bash
x=2000
x=`expr $x + $x`
echo $x # 输出4000

注意:参数和运算符中要有空格隔开:

#! /bin/bash
x=2000
x=`expr $x+$x`
echo $x # 输出:2000+2000
  • 比较操作
操作 整数操作 字符串操作
相同 -eq =
不同 -ne !=
大于 -gt >
小于 -lt <
大于或等于 -ge
小于或等于 -le
为空 -z
不为空 -n

比如:

x="2000"
y="2000"
if[ x=y ]; then #注意[]前后的空格不能少
   echo "echo"
fi

三、循环

  • if
if [ expression ]
then
statments
elif [ expression ]
then
statments
else
statments
fi
  • for
for 循环控制
do
statments
done
  • while
while [ condition ]
do
statments
done
  • 函数
function my_funcname { 
code block
}

或者

my_funcname() { 
code block
}

BASH 中要求函数的定义必须在函数使用之前

三、关键字

资料分享

java学习笔记、10T资料、100多个java项目分享


欢迎关注个人公众号【菜鸟名企梦】,公众号专注:互联网求职面经javapython爬虫大数据等技术分享**:
公众号**菜鸟名企梦后台发送“csdn”即可免费领取【csdn】和【百度文库】下载服务;
公众号
菜鸟名企梦后台发送“资料”:即可领取5T精品学习资料**、java面试考点java面经总结,以及几十个java、大数据项目资料很全,你想找的几乎都有
扫码关注,及时获取更多精彩内容。(博主今日头条大数据工程师)