Bash scripts

创建新shell脚本

1. 创建包含bash命令的文本文件。文件的第一行应为:

#!/bin/bash
2. 使文件可执行(使用chmod +x scripts)
3. 将文件放置在用户的$PATH的目录中
~/bin – 用于用户的私有程序
/usr/local/bin – 本地开发、系统上的其他人使用的脚本
/usr/local/sbin - 本地开发、由root使用的脚本
直接运行脚本和使用source命令运行脚本是不同的!
脚本调试模式:
#!/bin/bash -x

# bash -x scripts

引用和转义
引用和转义在shell解析字符串时用于去除字符串中特殊字符或保留词语的特殊含义。这会导致按字面处理字符串,而不是展开变量或将其部分内容视作具有特殊含义。
引用有三种类型:
弱引用
将字符串放置在双引号中,保留字符串中所有字符的文字值,$、`、\和!字符除外。换言之,变量扩展和命令扩展在双引号内仍起作用。
echo “can I have a $FRUIT”
echo “The current time is $(date +%r).”

强引用
将字符串放置在单引号中,保留字符串中所有字符的文字值,同时禁用所有扩展:
echo “Make $$$ Fast”
rm ‘untitled folder‘

转义
非引用的\是转义字符。它保留了下一个字符的文字值。(例如,\$PATH是确切的字符串$PATH,而
不是PATH变量的内容。)
echo Make \$\$\$ Fast\!
ls untitled\ folder

Shell变量
shell变量用于为稍后在脚本中使用的名称指定值,并且仅限于shell命令行或从中声明变量的脚本。

命令替换
命令替换在子shell中执行指定命令并用命令输出替换脚本中的命令替换。

算术运算符
算术运算符指的是可以在程序中实现加、减、乘、除等数学运算的运算符。

Shell计算命令:
用$[]表示数学运算。
# echo $[1+2]
# a=1; echo $[$[$a+1]*2]

用expr表示数学运算。
# echo `expr 1 + 2`

用let指示数学运算。
# let A=1+2
# echo $A

用(())表示数学运算。bash内建功能,效率高。

#!/bin/bash
for ((i=1;i<10;i++))
do
((j+=i))
done
echo $j

循环
for循环用于值列表中的相同命令的重复。

循环与计算结合:

Bash位置参数

使用位置参数来读取传递给脚本的命令行参数或选项输入。各种特殊变量存储传递的选项编号
Bash解析的个别参数或整个原始命令行。
指定的位置参数总数:$#
位置参数自身:$0、$1、$2、$3....
所有位置参数: [email protected]、$*

退出状态
Linux命令完成时,将返回退出状态。成功完成程序时,将返回0的推出状态。这被bash
当作逻辑True值。非零退出状态通常表示发生了错误,并且被bash当作逻辑False值。
例如:grep的退出状态的含义:
0 – 在指定的文件中找到了模式
1 – 在指定的文件中未找到模式
>1 – 一些其他错误(无法打开文件、错误的搜索表达式等)
推出状态的值被存储在"?"中,可以使用以下命令查看:
# echo $?

test条件判断
test命令可用于评估bash脚本中的表达式。它评估其参数所指定的表达式,如果表达式
为true,返回零退出状态,如果表达式为false,则返回非零退出状态。test具有替代语
法,使用方括号"[]"将表达式括起来,这样更易于阅读。

-n        ##有无数值

-z      ##是否为空

-e       ##是否存在

-d       ##类型为目录i

-f        ##类型为文件

-s       ##类型为socket

-L       ##类型为link

-eq     ##等于

-ne     ##不等

-lt        ##小于

-le       ##小于等于

-gt      ##大于

-ge     ##大于等于

if语句
if命令检查if后面的命令或列表的退出值。如果第一个命令评估为true/零,则运行then之后的命令列表,直至任一else。如果第一个命令评估为false/非零,则运行else与fi之间的命令列表(反向平写if,标记if块的结束)。

case语句
case语句 :它能够把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该执行哪部分代码.

expect语句
在shell中利用expect实现自动应答脚本。

环境变量
shell和脚本使用变量来存储数据 ,有些变量可以连同它们的内容传递给子进程,这些变量我们称之为环境变量。

时间: 2024-12-16 23:30:15

Bash scripts的相关文章

-bash: ./scripts/mysql_install_db: /usr/bin/perl: bad interpreter: No such file

安装完成后,初始化数据库报错如下: [[email protected] mysql]# ./scripts/mysql_install_db  --user=mysql -bash: ./scripts/mysql_install_db: /usr/bin/perl: bad interpreter: No such file or directory 貌似提示注释器错误,没有/usr/bin/perl文件或者档案,解决办法(安装perl跟perl-devel即可): 执行  yum -y i

【Bash Scripts】

一. shell脚本基础Bash脚本类似批处理,简单来讲就是把许多的指令集合在一起,并提供循环.条件.判断等重要功能,语法简单实用,用以编写程序,大大简化管理员的操作,并可以完成图形工具所无法实现的功能. 1. 创建包含bash命令的文本文件.文件的第一行应为:#!/bin/bash#!/usr/bin/env tcsh [这样写不用寻找指定bash目录,在env中自动搜索执行] 2. 使文件可执行(使用chmod +x scripts:sh ~.sh) 3. 将文件放置在用户的$PATH的目录

六. bash脚本(bash scripts),bash变量

shell变量,shell脚本基础知识 shell变量分类:环境变量,本地变量,局部变量,位置变量,特殊变量 1.shell本地变量 (1) 变量赋值 name="value" value 字符串 name="string" 变量引用 name="$name" 命令引用 name=`COMMAND`, name=$(COMMAND) (2) 变量引用 $name, %{name} " " : 若引用,其中的变量引用会替换为变量

Linux之linux bash scripts

进程是程序运行时的内存空间和设置,存在于用户空间:用户空间是存放运行的程序和它们的数据的一部分内存空间.shell是用户和Linux内核之间的接口程序,围绕内核的外层.当从shell或其他程序向Linux传递命令时,内核会做出相应的反应.shell也是一个解释型的程序设计语言,支持绝大多数在高级语言中能见到的程序元素,如数据变量.参数传递.判断.流程控制.数据输入和输出,子程序及以中断处理等. shell程序的编译过程分为预处理.编译.汇编.链接等几个阶段 大致的执行过程,图示:        

bash scripts收集

只保留代码中的头文件声明 #! /bin/sh  echo "leave only INCluding declaration in c files"  find $1 -name "*.c" -exec echo ">>> processing" {} \; -exec sed -i '  #fetch lines without leading #include  /^\s*#\s*include\s/b  #b代表分支跳转

Bash 的若干基本问题

Bash 的若干基本问题 这里介绍一些bash启动前.后的问题,以及一些使用bash需要注意的基本问题. 1.Bash的介绍 Bash是一种Shell程序,它是一般的Linux系统中的默认的Shell程序,一般情况下Bash指的是/bin/bash这个软件. 一个Linux系统中有多少个可用的Shell程序,可以从/etc/shells文件中查出来. 当前登录用户的默认Shell是哪一个,可以从/etc/passwd文件中与此用户对应的那一行最后一个字段看出来.或者也可以通过echo $SHEL

写了一段批量管理的bash小程序,利用了redhat 原生的expect,wget包组。

粘贴下readme: #myexpect V1.0 released #auth [email protected] #env description myexpect server requires:bash is needed ofcource expect for answer password vsftpd for client to down load scripts upload files etc. myexpect client requires:ftp for upload w

bash guide

Table of Contents Basic Operations 1.1. File Operations 1.2. Text Operations 1.3. Directory Operations 1.4. SSH, System Info & Network Operations 1.5. Process Monitoring Operations Basic Shell Programming 2.1. Variables 2.2. Array 2.3. String Substit

基于NFS共享的Mysql之HA高可用集群实现

192.168.139.8 作为NFS-Server ,192.168.139.2和192.168.13.4用来安装mysql ___________________________________________________________________________________________以下操作在192.168.139.8上操作 [[email protected] ~]# fdisk -l //首先要准备一块磁盘进行分区,用来做lv,再将此lv格式化后挂载并