Bash中的特殊字符
# 表示注释
#! 指定当前脚本的解析器
#!/bin/bash
echo "Hello World"
; 命令分隔符
#!/bin/bash
echo hello;echo there
filename=ttt.sh
if [ -r "$filename" ]; then
echo "File $filename exists."; cp $filename $filename.bak
else
echo "File $filename not found."; touch $filename
fi; echo "File test complete"
;; 终止case选项
#!/bin/bash
varname=b
case "$varbname" in
[a-z]) echo "abc";;
[0-9]) echo "123";;
esac
. 等价与source命令。source命令用于在当前bash环境下读取并执行filename.sh中的命令
$ source test.sh #等价于 . test.sh
" String将会阻止解释Stirign中大部分特殊字符
' String将会阻止String中所有特殊字符的解释,比"更强烈的方式
/ 文件名路径分隔符,也可用作除法算术操作符
\ 一种单单字符的引用机制,\X会转义成字符X
` 命令替换 command结构可以将命令的输出赋值到另一个变量中去。``会优先执行
$ cp `mkdir bak` test.sh bak #先创建bak目录,然后复制test.sh到bak中去
:空命令,相当于NOP(no option)。也被认为与shell的内建命令true作用相同。:是一个bash的内建命令,它的退出码是0
#!/bin/bash
while :
do
echo "endless loop"
done
#!/bin/bash
condition=5
if [ $condition -gt 0 ]
then : #什么都不做,退出分支
else
echo "$condition"
fi
:在与重定向操作符>结合使用时,将会把一个文件清空,但不会修改这个文件的权限。若之前的文件不存在,就创建这个文件。
$ : > test.sh #test.sh被清空了
:在与重定向操作符>>结合使用时,将不会对预先存在的目标文件产生任何影响,若这个文件之前不存在,则创建这个文件。
:还可以用来注释行当不会关闭错误检查,也可用来在/ect/passwd和$PATH变量中做分隔符。
? 在一个双括号结构中,?就是C语言的三元操作符
#!/bin/bash
a=10
(( t=a<50?8:9 ))
echo $t
$变量替换、命令替换
$ cd $(echo Documents)
$ pwd
(())命令组:在括号中的命令列表,将会作为一个子shell来运行。在括号中的变量,由于是在子shell中所以对脚本剩下的部分是不可用的。父进程,也就是脚本本身,不能够读取在子进程中创建的变量,也就是在shell中创建的变量。
#!/bin/bash
a = 123
( a = 321; ) #括号中的变量a相当于一个局部变量
echo "a = $a"
bash test.sh #output a = 123
(())还可以初始化数组
#!/bin/bash
arr=(1 2 3 4 5 6) #不可以出现空格哦~ arr = ..是不行的哦
echo ${arr[3]}
{}文件名扩展
#!/bin/bash
if [ ! -w 't.txt' ];
then
touch t.txt
fi
echo 'test txt' >> t.txt
cp t.{txt,back}
{{}}也可代表代码快,又被称为内部组,实际上是一个匿名函数。
#!/bin/bash
a=123
{ a=321; } #中间一定要有空格哦~
echo "a = $a"
$ bash test.sh #output a = 321 #在{}中声明的变量,对于脚本其它部分的代码来说是可见的
[]条件测试,[是shell内建test命令的一部分,并不是/urs/bin/test中的外部命令的一个链接
#!/bin/bash
a=5
if [ $a -lt 10 ]
then
echo " a : $a "
else
echo "a > 10"
fi
[]数组元素,在一个array结构的上下文中,中括号用来引用数组中的每个元素的编号。
#!/bin/bash
arr=(12 22 32)
arr[0]=2
echo ${arr[0]}
<>重定向
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不存在的话,将会被创建
| 管道,分析前边命令的输出,并将输出作为后边命令的输入。
$ ps -ef | aux tomcat
-选项,前缀,在所有的命令若想使用参数,前面都要加上-
#!/bin/bash
a=5
b=5
if [ "$a" -eq "$b" ]
then
echo " a is equal to b"
fi
-用于重定向stdin或stdou
备份最后24小时当前目录下所有修改的文件
#!/bin/bash
BACKUPFILE=backup-$(date +%m-%d-%Y) #在备份文件中插入时间
archive=${1:-$BACKUPFILE}
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目录
Bash中的特殊字符的更多相关文章
- (转载)Bash 中的特殊字符大全
转自:https://linux.cn/article-5657-1.html Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是she ...
- Bash 中的特殊字符大全【转】
Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好 ...
- sed中使用变量及变量中存在特殊字符‘/’处理
sed中使用变量,普通的处理方式无法解析变量 如当前file文件中存在字符串pedis,现将其替换为redis [root@localhost work]# cat file pedis 如下两种替换 ...
- Shell中的特殊字符(三)
一 通配符 [root@192 test]# touch abc [root@192 test]# touch abcd [root@192 test]# touch 012 [root@192 te ...
- Bash 中的 $0 在什么时候不是 argv[0]
每个 C 程序都有一个 main 函数,每个 main 函数都有一个 argv 参数,这个参数是一个字符串数组,这个数组的值是由该 C 程序的父进程在通过 exec* 函数启动它时指定的. 很多人说 ...
- URL中的特殊字符
原网址:http://pichcar.iteye.com/blog/676292 URL中的特殊字符 有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了.编 ...
- Bash中的任务(job)管理
本来不准备写这篇博客的,因为任务管理(job管理)非常非常常用,以至于觉得根本没有必要去写这样一个东西.但想了下,还是记录一下吧,也许有人会用到呢. 不知你是否碰到过这样的情况,当你兴致勃勃的打开VI ...
- bash中不可以用字符串做数组下标
bash中可以用字符串做数组下标吗例如 test["abc"]=1------解决方案-------------------- 好像是误会,是awk里可以,bash shell里不 ...
- JS 正则表达式中的特殊字符
正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...
随机推荐
- js正则标志/g /i /m的用法,以及实例
js正则标志/g /i /m的用法,以及实例 正则的思想都是一样的,但是具体的写法会有所不同,在这里提到的/g,/i,/m在其他的地方也许就不能用了. 一,js正则标志/g,/i,/m说明 1,/ ...
- Extjs中处理mouseover的闪烁问题
在使用mouseover和mouseout实现鼠标滑动效果并且target的dom较复杂时,可能会产生闪烁现象,产生这个问题的一个原因是mouseover事件本身的冒泡特性和target dom的子元 ...
- NSException
NSException是什么? 最熟悉的陌生人,这是我对NSException的概述,为什么这么说呢?其实很多开发者接触到NSException的频率非常频繁,但很多人都不知道什么是NSExcepti ...
- maven install 时提示“程序包 javax.crypto不存在”
但是javax.crypto是在jdk的jre\lib目录下的 解决方案: <compilerArguments> <bootclasspath>${java.home}/li ...
- 【转载】JSP中文乱码问题
原作者http://www.cnblogs.com/xing901022/p/4354529.html 阅读目录 之前总是碰到JSP页面乱码的问题,每次都是现在网上搜,然后胡乱改,改完也不明白原因. ...
- grease monkey setTimeout
在grease monkey中要使用如下方法进行setTimeout var f = function(){alert(1); setTimeout(f,100); } var inst=setTim ...
- C语言知识整理(3):内存管理(详细版)
在计算机系统,特别是嵌入式系统中,内存资源是非常有限的.尤其对于移动端开发者来说,硬件资源的限制使得其在程序设计中首要考虑的问题就是如何有效地管理内存资源.本文是作者在学习C语言内存管理的过程中做的一 ...
- go——搭建Win7下的Go开发环境
1.首先需要下载下载go平台安装包 安装程序 下载地址:https://golang.org/dl/ (墙内下载地址http://www.golangtc.com/download),如果是您的系统是 ...
- apache 日志为每个域名独立配置单独的日志文件
<VirtualHost *:80>DocumentRoot "E:\luyou\viplijiang"ServerName vip.li.comTransferLog ...
- tomcat 下虚拟机部署导致应用filter失效的问题
遇到一个困扰我两天的问题 服务器的tomcat上面挂了3个项目 1个项目在D:\tomcat\\webapps\ROOT下 运行正常 1个项目在D:\heyefan下 运行正常 1个项目在D:\MA ...