示例均来自网络,附带有原始链接地址,自己练习整理发出,均测试可用

linux shell 基本语法 - 周学伟 - 博客园

https://www.cnblogs.com/zxouxuewei/p/6393092.html

变量声明和赋值

定义变量,等号左右不要有空格

通过export 变成全局变量

#!/bin/bash
#a.sh
a=666
b=hello
g_user=root
export g_user#全局变量
echo $a
echo $b
echo $g_user #调用
bash a.sh

把命令结果赋值给变量

  1. 圆括号
current_date=$(date)
echo current data is [$current_date]
  1. 用反引号,和键盘上的波浪符号一个键(仅参考,使用1即可)
current_date=`date`
echo current data is [$current_date]
  1. 花括号加反引号(仅参考,使用1即可)
current_date={`date`}
echo current data is [$current_date]

if条件判断

#!/bin/bash
#a.sh
if [[ $1 == 1 ]]; then
echo "first argument is 1"
else
echo "first argument is not 1"
fi #调用
bash a.sh 1

case分支判断

#!/bin/bash
#a.sh
case $1 in
1)
echo "the case is 1"
;;
2)
echo "the case is 2"
;;
3)
echo "the case is 3"
;;
4)
echo "the case is 4"
;;
*)
echo "no case match first argument"
;;
esac #调用
bash a.sh 2

for循环语句

形式一

#!/bin/bash
#a.sh
for (( i = 0; i < 10; i++ )); do
echo "current value is $i"
done #调用
bash a.sh

形式2

#!/bin/bash
#a.sh
for i in 1 2 3 4 5; do
echo "current value is $i"
done #调用
bash a.sh

while循环

#!/bin/bash
#a.sh
i=$1 while [[ $i > 0 ]];
do
echo "now i's value is $i"
let "i=i-1"
done #调用
bash a.sh 10

函数

shell自定义函数 - 立志做一个好的程序员 - 博客园

https://www.cnblogs.com/oxspirt/p/7246075.html

  • 1、必须在调用函数地方之前,声明函数,shell脚本是逐行运行。不会像其它语言一样先预编译。一次必须在使用函数前先声明函数。
  • 2、total=$(fSum 3 2); 通过这种调用方法,我们清楚知道,在shell 中 单括号里面,可以是:命令语句。 因此,我们可以将shell中函数,看作是定义一个新的命令,它是命令,因此各个输入参数直接用空格分隔,命令里面获得参数方法可以通过:\(0…\)n得到。 $0代表函数本身。
  • 3、函数返回值,只能通过$?系统变量获得,直接通过=获得是空值。其实,我们按照上面一条理解,知道函数是一个命令,在shell获得命令返回值,都需要通过$?获得。
  • 4.可以带function fun()定义,也可以直接fun() 定义,不带任何参数。
  • 5.参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)
#!/bin/bash
#a.sh
function add()
{
echo "arg1 is $1,arg2 is $2"
return $(($1+$2))
} plus()
{
echo "arg1 is $1,arg2 is $2"
return $(($1*$2))
} value=$(add $1 $2);
echo "[echo value:$value,function add value:$?]" value=$(plus $1 $2);
echo "[echo value:$value,function plus value:$?]" #调用
bash a.sh 5 7

数组

#!/bin/bash
#a.sh
name=(a bbb c d e f g) #数组
length=${#name[@]} #获取数组长度 echo length1:${#name[@]} #获取数组长度
echo length2:${#name[*]} #获取数组长度
echo length3:${#name[1]} #取得数组单个元素的长度 for (( i = 0; i < $length; i++ )); do
echo value $i=${name[$i]} #读取数组的值
done #调用
bash a.sh

I/O

Shell中重定向的深入讲解_linux shell_脚本之家

https://www.jb51.net/article/142918.htm

>  输出重定向,覆盖方式
>> 输出重定向,追加方式
< 输入重定向
<< 标准输入来自命令行的一对分隔号的中间内容

实例

#生成 input.txt
cat <<EOF>input.txt
zhao
qian
sun
li
zhou
wu
zheng
wang
EOF #将input.txt文件作为sort命令的输入
sort < input.txt # 将排序后的结果输出到input.sort.txt文件中
sort < input.txt >input.sort.txt # 将排序后的结果追加输出到input.txt文件中
sort < input.txt >> input.txt #将标准输入重定向为input.txt文件,标准输出重定向为input2.txt文件(追加),将标准错误重定向为error文件
sort 0< input.txt 1>> input2.txt 2> input.error.txt

一个程序的的输入可以来自于键盘,也可以来自于文件或者其他设备;同样的,一个程序也可以将输出显示在屏幕或者保存到文件中。这就涉及到标准输入标准输出标准错误

程序的输入是标准输入,默认是键盘,用户可以将其指定为文件或其他设备。

程序的输出有两种,即标准输出和标准错误,其中标准输出是程序的正常输出、标准错误是程序的错误输出。二者默认都被指定为屏幕,用户可以将其指定为文件或其他设备。

每个输入源和输出地都有一个描述符,标准输入的描述符为0,标准输出的描述符为1,标准错误的描述符为2。

EOF

linux下EOF写法梳理 - 散尽浮华 - 博客园

https://www.cnblogs.com/kevingrace/p/6257490.html

执行脚本的时候,需要往一个文件里自动输入N行内容。如果是少数的几行内容,还可以用echo追加方式,但如果是很多行,那么单纯用echo追加的方式就显得愚蠢之极了!

这个时候,就可以使用EOF结合cat命令进行行内容的追加了。

EOF是END Of File的缩写,表示自定义终止符.既然自定义,那么EOF就不是固定的,可以随意设置别名,在linux按ctrl-d就代表EOF.

EOF一般会配合cat能够多行文本输出.

#把EOF的内容作为cat 的输入
cat <<EOF
aaa
bbb
ccc
EOF #把EOF的内容作为cat 的输入,并把cat的输出定向到a.txt
cat <<EOF > a.txt
aaa
bbb
ccc
EOF

getopts

获取参数定义

#!/bin/bash
#a.sh while getopts "a:b:c:r:" arg; do
case $arg in
a)
a=$OPTARG
;;
b)
b=$OPTARG
;;
c)
c=$OPTARG
;;
r)
repo=$OPTARG
;;
?)
echo you need help
;;
esac
done echo "a:$a,b:$b,c:$c,repo:$repo" #调用
bash a.sh -a 3 -b 4 -c 5 -r 6

linux bash 的基础语法的更多相关文章

  1. linux base shell 基础语法

    转载 本文主要是基础的基础,希望对大家有所帮助 一.Shell基本类型的变量: (1)Shell定义的环境变量: Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这 ...

  2. [linux]BASH 的基本语法

    最简单的例子 -- Hello World! 关于输入.输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1     最简单的例子 -- ...

  3. -Shell 教程 Bash 脚本 基础语法 MD

    目录 目录 Shell 简介 Shell 脚本 Shell 环境 第一个shell脚本 Shell 变量 定义变量 使用变量 只读变量 删除变量 Shell 字符串 单引号 双引号 字符串基本操作 S ...

  4. Linux bash shell脚本语法入门

    1.基础 #!/bin/bash   //bash脚本第一句都是这个,他会让系统指定以bash来解释这个脚本 #                 //shell脚本注释符号 2.变量和使用 HOME= ...

  5. (转)Linux bash shell脚本语法入门

    http://www.linuxsky.org/doc/newbie/201004/389.html 1.基础 #!/bin/bash //bash脚本第一句都是这个,他会让系统指定以bash来解释这 ...

  6. linux base shell 基础语法2

    转载 http://blog.csdn.net/aggrelxf/article/details/8263110 单引 双引 反引用[] [[]] 将命令的输出读入一个变量中,可以将它放入双引号中,即 ...

  7. Linux C 程序 基础语法(1)

    1.Linux 下第一支C程序,控制台打印一句话. vi first.c //linux新建文件 #include<stdio.h> int main() { printf("w ...

  8. Bash的基础知识man手册

    Bash的基础知识man手册 由于基于Android类设备的渗透测试都是通过各类终端实现.所以掌握Shell相关操作就显得尤为重要.Bash是一个为GNU计划编写的Unix Shell本文选自基于An ...

  9. linux 脚本编写基础(一)

    1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在 ...

随机推荐

  1. CodeForces 200D Programming Language

    Recently, Valery have come across an entirely new programming language. Most of all the language att ...

  2. oracle里面查询重复数据的方法

    一张person表,有id和name的两个字段,id是唯一的不允许重复,id相同则认为是重复的记录. select id from group by id having count(*) > 1 ...

  3. Wpf Prism.Unity 7

    Prism.Unity 中UnityBootStrapper已经不用了,可以继承PrismApplication 1.Install-package Prism.Unity -v 7.2.0.1367 ...

  4. layui confirm 嵌套使用 (随笔记)

    使用layui confirm时不要使用aspx控件,使用html的button按钮 借用一下 官方例子 layer.confirm('您是如何看待前端开发?', { btn: ['重要', '奇葩' ...

  5. django9-ajax

    1.ajax 局部刷新 ,不可能每次提交请求刷新整个页面 2.ajax实例 在不刷新整个的情况下完成计算器 ,ajax的post需要添加csrftoken 1)设置一个组件ajaxcsrf.html ...

  6. 2-1-动态方法:ByTagName()

    动态方法:ByTagName() <ul id="list"> <li></li> <li></li> <li&g ...

  7. python的列表元素输出

    1)for循环输出 这种方法是大家最容易想到的,也是最简单的,但是它有一个弊端:它的输出是竖向排列的,而我们往往需要水平输出. >>> for i in [1,2,3]: print ...

  8. 学习:SpringCloud(一)

    微服务: 微服务是一种架构模式或者一种架构风格,提倡将单一应用程序划分成一组小的服务==独立部署==,服务之间相互配合.相互协调,每个服务运行于自己的==进程==中. 服务与服务间采用轻量级通讯,如H ...

  9. Python继承、多继承、魔术方法

    继承和多继承的概念和使用 super的用法 __str__ __repr__ __call__ 多继承方法解析顺序和Mix-in开发模式 魔术方法原理和作用 继承 定义类的时候,在类名后面的括号里填继 ...

  10. [Go] 分页计算页码的主要逻辑

    当使用imap进行读取邮件体的时候,有个函数可以根据传入的开始和结束索引来一次读取多条邮件内容主要逻辑类似这样,从1开始, 1,10   11,20     21,30 或者 1,31   32,63 ...