澳门威利斯人_威利斯人娱乐「手机版」

来自 网络资讯 2020-02-10 14:41 的文章
当前位置: 澳门威利斯人 > 网络资讯 > 正文

特殊字符,Bash中的特殊字符

评释:小说内容截选自实验楼教程【高等Bash脚本编制程序指南】第3节~

一齐站点

#符号

  1. 行首以#始于但背后没有!的是注释
  2. #! 用于钦命解释器
  3. 选拔转义符"" 后#不再代表注释,而是字符
    echo The # here does not begin a comment
  4. 参数替换echo ${PATH#*:} 这里替换的法则还须求尤其读书
  5. 数制调换:echo $(( 2#101010))

1.# 注释

行首以 # 开头(除#!之外卡塔尔的是注释。#!是用于钦赐当前剧本的解释器,大家这里为bash,且相应指明完整路线,所感到/bin/bash

当然,在echo中间转播义的 # 是不能同日而道注释的:

$ vim test.sh

输入如下代码,并保存。(中文为注释,没有必要要输入)

 #!/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 $(( 2#101011 )) # 数制转换,不是一个注释,双括号表示对于数字的处理 # 欢迎来到实验楼参观学习

实行脚本,查看输出

$ bash test.sh

批注表达

上边包车型大巴台本表达了什么接受echo打字与印刷出一段字符串和变量内容,这里运用了两种分歧的点子,希望你能够驾驭这两种分化方法的异同

‘#’号

申明符号(Hashmark[Comments])

  1. 在shell文件的行首,作为shebang标志,#!/bin/bash

#!是用来钦定当前剧本的解释器,大家那边为bash,且相应指明完整路径,所感觉/bin/bash

  1. 其余地点作为注释使用,在风流倜傥行中,#末端的内容并不会被执行,除非

  2. 唯独用单/双引号包围时,#作为#号字符本身,不富有注释功用。

  3. 在echo中间转播义的 # 是不能同日来说注释的

  4. 数制转换

例子

#!/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 # here does begin a comment
 echo $(( 2#101011 ))     # 数制转换(使用二进制表示),不是一个注释,双括号表示对于数字的处理

实行结果

The # here does not begin a comment.
The # here does not begin a comment.
The # here does not begin a comment.
The 
43

;分号##

  1. 使用; 能够在生龙活虎行写上多少个或多少个以上命令
  2. if <>;then<> 语句要加分号
  3. 终止case选项;;
case $var in
    [0-9] echo "<9";;

1.限令分隔符

选拔分号能够在同风流罗曼蒂克行上写四个或两个以上的吩咐。

$ vim test2.sh

输入如下代码,并保存。

 #!/bin/bash echo hello; echo there filename=ttt.sh if [ -e "$filename" ]; then # 注意: "if"和"then"需要分隔,-e是判断文件存在否 echo "File $filename exists."; cp $filename $filename.bak else echo "File $filename not found."; touch $filename fi; echo "File test complete."

执行脚本

$ bash test2.sh

翻看结果

$ ls

解释表明

上边脚本使用了四个if件分支推断二个文件是还是不是留存,若是文件存在打字与印刷相关新闻并将该文件备份;假设官样文章打字与印刷相关新闻并创制二个新的文书。最后将出口"测量检验完了"。

分号 ;

(.)dot##

  1. 等价于source命令
    在最近bash境况下读取并实践shell命令
source test.sh

. test.sh       //equals

2.终止case选项

接收双总部能够告生龙活虎段落case选项。

$ vim test3.sh

输入如下代码,并保存。

 #!/bin/bash varname=b case "$varname" in [a-z]) echo "abc";; [0-9]) echo "123";; esac

试行脚本,查看输出

$ bash test3.shabc

讲授表明

上边脚本使用case言辞,首先成立了三个变量早先化为b,然后使用case言语判断该变量的约束,并打字与印刷相关音信。借使您有任何编制程序语言的经历,那将相当的轻松领悟。

单分号 ;

作为多语句的分隔符(Command separator [semicolon])。
五个语句要放在同少年老成行的时候,能够利用分号分隔。注意,临时候分号供给转义。

例子

 #!/bin/bash
echo hello; echo there

试行结果

hello
there

引号##

双引号("卡塔尔国和单引号('卡塔尔国都有阻拦解释字符串中极度字符比方#,等的作用;
但单引号更为肯定,阻止string中具有特殊字符;
双引号阻止一大半特殊字符

1.等价于 source 命令

bash 中的 source 命令用于在当下 bash 情形下读取并实行 FileName.sh 中的命令。

$ source test.shHello World$ . test.shHello World

双分号 ;;

双分号(Terminator [double semicolon])。

动用双分号(;;)能够告意气风发段落case选项

例子

 #!/bin/bash

varname=b

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

实施结果

abc

说明

case分支语句的格式如下:

case $变量名 in

    模式1)

    命令序列1 ;;

    模式2)

    命令序列2 ;; 

     *)

    默认执行的命令序列  ;; 

esac

斜线/和反斜线##

  1. 斜线=文件路线分隔符
    只怕除法运算符
  2. 反斜线是大器晚成种对单字符的援引机制。x 会转义字符x,等价于"x",'x'
    ""平日用来转义双引号和单引号,那样双引号和单引号就不会被演说成特有含义了。

1.双引号

"STQX56ING" 将会阻止ST奥迪Q3ING中大部离奇的字符。前边的实验会详细表达。

点号 .

点号(dot command [period])。

  1. 也正是bash内建命令source,如:
#!/bin/bash
. data-file
#包含data-file
  1. 用作文件名的黄金时代局地,在文件名的初叶,表示该公文为掩瞒文件,ls经常不显示出来(ls -a只怕 ls -ah 能够来得);

  2. 作为目录名,多少个点代表当前目录,三个点号代表上层目录(当前目录的父目录)。注意,三个以上的点不出新,除非您用引号(单/双)包围作为点号字符本身;

  3. 正则表明式中,点号表示放肆八个字符。

注意

在一定于source命令使用时

$ source test.sh
Hello World
$ . test.sh #如果无法执行,可尝试 . ./test.sh
Hello World

反引号(`)##

命令替换
可以将指令的出口复制到另七个变量中去

cp `mkdir dir` test.sh dir

先创建back目录,然后复制test.h到back目录

2.单引号

'STCR-VING' 将会阻碍ST酷威ING中具有特殊字符的讲解,那是大器晚成种比接纳"更令人侧目标样式。前面包车型大巴试验会详细表明。

双引号 “

双引号(partial quoting [double quote])。

一些引用。双引号包围的剧情能够允许变量扩张,也同意转义字符的存在。借使字符串内现身双引号自个儿,要求转义,因而不必然双引号是成对的。

冒号:##

1,空命令=nop,也得以认为与shell内建命令true功能同样

while :                 //=while true
do
    echo "endless loop"
done

也得以在if/then中作占位符

if[$condition -gt 0]
then :      #do nothing
else
    ..
  1. 变量扩充/字串替换
$ : > test.sh   #empty file
#same function as 
cat /dev/null > test.sh

3. 区别

此处举贰个例证,能够更近生动的印证

图片 1此地输入图片的叙说相仿是$HOME,单引号会直接以为是字符,而双引号认为是二个变量

单引号 ‘ ’

单引号(full quoting [single quote])。

单引号括住的内容,被视为单一字符串,引号内的取缔变量增加,全数字符均作为字符本人管理(除单引号本人之外),单引号必需成对现身。

1.斜线

文本名路线分隔符。分隔文件名区别的片段(如/home/bozo/projects/Makefile)。也足以用来作为除法算术操作符。注目的在于linux中代表路线的时候,许七个/根一个/是如出风流浪漫辙的。/home/shiyanlou等同于////home///shiyanlou

逗号 ,

逗号(comma operator [comma])。

  1. 用在连年两次三番串的数学表明式中,那串数学表达式均被求值,但唯有最终一个求值结果被重返。如
#!/bin/bash
let t1=((a=5 1, b=7 2))
echo t1=$t1, a=$a, b=$b
## 这个$t1=$b;
  1. 用以参数取代中,表示首字母小写,借使是八个逗号,则表示全部大写,注意,那天性情在bash version 4的时候被增添的。例子:
a="ATest"
echo ${a,}
echo ${a,,}
## 前面输出aTest,后面输出的是atest。

本文由澳门威利斯人发布于网络资讯,转载请注明出处:特殊字符,Bash中的特殊字符

关键词: 澳门威利斯人 程序员 linux 特殊字符 Bash