linux之bash脚本特殊字符

在这里插入图片描述

在括号中的命令列表,将会作为一个子 shell 来运行。

在括号中的变量,由于是在子shell中,所以对于脚本剩下的部分是不可用的。父进程,也就是脚本本身,将不能够读取在子进程中创建的变量,也就是在子shell 中创建的变量

1.括号

#!/bin/bash

a=123
( a=321; )

echo "$a" #a的值为123而不是321,因为括号将判断为局部变量
输出 123

大括号({})
2.数组

创建数组

#!/bin/bash
array={1 4 5 7 9 14}
echo ${array[3]}

输出 7

3.文件扩展名
复制 t.txt 的内容到 t.back 中

#!/bin/bash
if [ ! -w 't.txt' ]
then touch t.txt
fi
echo ' test test ' >> t.txt
cp t.{txt,back}

4.代码块
代码块,又被称为内部组,这个结构事实上创建了一个匿名函数(一个没有名字的函数)。然而,与“标准”函数不同的是,在其中声明的变量,对于脚本其他部分的代码来说还是可见的

#!/bin/bash
a=123
{ a=321; }
echo "a=$a"

输出 a =321

中括号([])
1.条件测试
条件测试表达式放在[ ]中。下列练习中的-lt (less than)表示小于号

#!/bin/bash
a=5
if [ 5 -lt 10 ]
then echo "a=$a"
else 
 echo 'a > 10'
fi

输出 a=5

2.数组元素
在一个array结构的上下文中,中括号用来引用数组中每个元素的编号

#!/bin/bash
array=(1 4 5 6)
echo ${array[0]}

输出 1

尖括号(<>)
重定向
test.sh > filename:重定向test.sh的输出到文件 filename 中。如果 filename 存在的话,那么将会被覆盖。

test.sh &> filename:重定向 test.sh 的 stdout(标准输出)和 stderr(标准错误)到 filename 中。

test.sh >&2:重定向 test.sh 的 stdout 到 stderr 中。

test.sh >> filename:把 test.sh 的输出追加到文件 filename 中。如果filename 不存在的话,将会被创建。

竖线(|)

分析前边命令的输出,并将输出作为后边命令的输入。这是一种产生命令链的好方法。

#!/bin/bash

tr 'a-z' 'A-Z'
exit 0

现在让我们输送ls -l的输出到一个脚本中:

$ chmod 755 test26.sh
$ ls -l | ./test26.sh

输出的内容均变为了大写字母
在这里插入图片描述

破折号(-)
1.选项,前缀
在所有的命令内如果想使用选项参数的话,前边都要加上“-”。

#!/bin/bash

a=5
b=5
if [ "$a" -eq "$b" ]
then
    echo "a is equal to b."
fi

输出 a is equal to b

2.用于重定向stdin或stdout

下面脚本用于备份最后24小时当前目录下所有修改的文件

#!/bin/bash

BACKUPFILE=backup-$(date +%m-%d-%Y)
# 在备份文件中嵌入时间.
archive=${1:-$BACKUPFILE}
#  如果在命令行中没有指定备份文件的文件名,
#  那么将默认使用"backup-MM-DD-YYYY.tar.gz".

tar cvf - `find . -mtime -1 -type f -print` > $archive.tar
gzip $archive.tar
echo "Directory $PWD backed up in archive file \"$archive.tar.gz\"."

exit 0

破浪号~
表示home目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值