linux Bash脚本基础符号总结 (一)

  1.初识Bash

  首先编译一个简单的bash 

vim hello.sh

  使用vim编辑hello.sh ,输入如下代码并保存:

#!/bin/bash
echo hello word

  运行Bash脚本的方式:

# 使用shell来执行
$ sh hello.sh
# 使用bash来执行
$ bash hello.sh

  还可以让脚本本身就具有可执行权限,通过chmod命令可以修改:

# 赋予脚本的所有者该执行权限,允许该用户执行该脚本
$ chmod u+x hello.sh
# 执行命令,这将使用脚本第一行指定的shell来执行,如果指定shell不存在,将使用系统默认shell来执行
$  ./hello.sh

2.bash特殊符号

  2.1 # 注释(#!除外)

    #!是用于指定当前脚本的解释器,我们这里为bash,且应该指明完整路径,所以为/bin/bash 

#!/bin/bash

 echo "The # here does not begin a comment."
 echo ‘The # here does not begin a comment.‘
 echo The \# here does not begin a comment.
 echo The # 这里开始一个注释

 echo ${PATH#*:}         # 参数替换,不是一个注释
 echo $(( 2#101011 ))   # 数制转换(使用二进制表示),不是一个注释

  2.2 ;分号(使用分号(;)可以在同一行上写两个或两个以上的命令。)   

 #!/bin/bash
 echo hello; echo there
 filename=ttt.sh
 if [ -r "$filename" ]; then    # 注意: "if"和"then"需要分隔
     echo "File $filename exists."; cp $filename $filename.bak
 else
     echo "File $filename not found."; touch $filename
 fi; echo "File test complete."

  2.3终止case选项(双分号)

 #!/bin/bash

 varname=b

 case "$varname" in
     [a-z]) echo "abc";;
     [0-9]) echo "123";;
 esac

  2.4点号 . 等价于 source

$ source test.sh
Hello World
$ . test.sh
Hello World

  2.5 引号

    2.5.1  双引号(")  "STRING" 将会阻止(解释)STRING中大部分特殊的字符

     2.5.2  单引号(‘) ‘STRING‘ 将会阻止STRING中所有特殊字符的解释,这是一种比使用"更强烈的形式。

  2.6斜线和反斜线

    2.6.1 斜线(/) 文件名路径分隔符。分隔文件名不同的部分(如/home/bozo/projects/Makefile)。也可以用来作为除法算术操作符。

     2.6.2 反斜线(\) 一种对单字符的引用机制。\X 将会“转义”字符X。这等价于"X",也等价于‘X‘。\ 通常用来转义双引号(")和单引号(‘),这样双引号和单引号就不会被解释成特殊含义了。

  2.7反引号 (`)  

$ cp `mkdir back` test.sh back
$ ls

  2.8 冒号(:)

    2.8.1 空冒号 等价于“NOP”(no op,一个什么也不干的命令)。也可以被认为与shell的内建命令true作用相同。

#!/bin/bash

while :
do
    echo "endless loop"
done

  等价于:

#!/bin/bash

while true
do
    echo "endless loop"
done

可以在 if/then 中作占位符:

#!/bin/bash

condition=5

if [ $condition -gt 0 ]
then :   # 什么都不做,退出分支
else
    echo "$condition"
fi

    2.8.2 变量扩展/子串替换

      2.8.2.1 在与>重定向操作符结合使用时,将会把一个文件清空,但是并不会修改这个文件的权限。如果之前这个文件并不存在,那么就创建这个文件。

$ : > test.sh   # 文件“test.sh”现在被清空了
 # 与 cat /dev/null > test.sh 的作用相同
 # 然而,这并不会产生一个新的进程, 因为“:”是一个内建命令

      2.8.2.2 ":"还用来在 /etc/passwd 和 $PATH 变量中做分隔符.

$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/games
$

  2.9 问号(?)

  在一个双括号结构中,? 就是C语言的三元操作符

 #!/bin/bash

 a=10
 (( t=a<50?8:9 ))
 echo $t

  2.10 美元符号($)

    2.10.1 变量替换

#!/bin/bash

var1=5
var2=23skidoo

echo $var1     # 5
echo $var2     # 23skidoo
时间: 2024-08-04 22:21:43

linux Bash脚本基础符号总结 (一)的相关文章

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

Linux Bash脚本基本语法知识

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 前提:读者能够基本使用一款文本编辑器以及了解文件的权限概念. 准备工作 在/home目录创建script文件用于保存所有的脚本程序: # mkdir /home/script # cd /home/script/ Bash脚本的基本输入输出 第一个bash脚本: # vim ./hello-world.sh 说明: "#!"是一个约定标记,它告诉系统这个脚本需要什么解释器来执行 作为可

Linux shell脚本基础学习详细介绍(完整版)二

详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续. Linux shell脚本基础已经被分成好几个部分了,这里对控制流程的内容也就马上讲完了,这是最后一部分关于here document,这里举例稍微有点复杂,我们慢慢来分析这个复杂Linux shell脚本. 6. Here documents 当要将几行文字传递给一个命令时,here docu

跟马哥学linux (lesson 7)Bash脚本基础知识

一.Linux程序分类: 1.守护进程(Daemon):开机自动启动 常见linux后台守护进程列举: amd:NFS守侯进程 apmd:高级电源治理 Arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和ip地址对数据库 Autofs:自动安装治理进程automount,与NFS相关,依靠于NIS crond:linux下的计划任务 Dhcpd:启动一个DHCP(动态IP地址分配)服务器 Httpd:WEB服务器 Inetd:支持多种网络服务的核心守候程序 Lpd:打印服务器 n

Linux Bash脚本编程语言中的美学与哲学

我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨Bash脚本语言中的美学与哲学. 这不是一篇Bash脚本编程的教程,但是却能让人更加深入地了解Bash脚本编程,更加快速地学习Bash脚本编程. 阅读这篇随笔,不需要你有Bash编程的经验,但一定要和我一样热衷于探索各种编程语言的本质,感悟它们的魅力. 其实早就想写关于Bash的东西了. 我们平时喜欢对编程语言进行分类,比如面向过程的编程语言.面向对象的编程语言.函数式编程语言等等.在我心中,我认为Bash就是

linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)

Shell 脚本基础 1.变量 什么是变量 #a=1 # echo $a 1 变量:可以变化的量 1.2变量名称注意事项 变量名不能以数字开头 不能与系统中已有的环境变量重名,尽量不要全部使用大写,尽量不要使用"_"下划线开头 最好做到见名知意 不能使用程序中的保留字,列如if,for等 1.3变量类型 字符型 数值型 整型浮点型 布尔型 条件是和否 #$echo $a 引用 abc 撤销 unset +(变量名)a 1.4变量操作 * 设置变量 * 引用变量 * 撤销变量 单引号和双

Linux shell脚本-基础学习笔记

Linux脚本能力不是太强,最近再补习下,毕竟linux shell在日常工作中还是很普遍的, 用起来更方便.省时省力. 以下是学习笔记,偏理论,后面有几个例子,供参考. shell脚本组成元素系统命令.文本处理工具(grep\sed等).变量.条件判断.循环结构和函数 -------------------------------------------- 三剑客:grep,sed,awk,还有wc,sort,head等 ------------------------------------

bash脚本基础

编程基础:程序:指令+数据                过程式:以指令为中心,数据服务于指令                对象式:以数据为中心,指令服务于数据shell程序:提供了编程能力,解释执行编程语言:低级:汇编               高级:                        编译:高级语言–>编译器–>目标代码    java,c#                        解释:高级语言–>解释器–>机器代码    shell,perl,pyth

bash脚本基础入门之条件测试

在运行bash命令的时候,无论成功还是失败都会返回为用户返回一个执行的结果,通常把他叫做退出状态码,每当我们运行命令的时候,退出状态码都会被记录在$?变量中,在命令行echo $?可以查看命令的执行结果,成功的值为0,失败的值为1-255之间的某个值. 注:在shell脚本中,退出状态码记录的是脚本最后一条命令,为方便检查脚本错误,可以使用exit #自定义退出状态码. shell结构化命令中,如if...then语句.while...do...done语句等的CONDITION条件都是以命令的