Linux—shell中$(( ))、$( )、``与${ }的

2019-02-26  本文已影响0人  白纸糊

命令替换

`$( )`与`` ``(反引号)都是用来作命令替换的。

命令替换**与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。

exp 1

`1.  $ echo today is $(date "+%Y-%m-%d")

2.  today is 2014-07-01` </pre>

$( )与``

在操作上,这两者都是达到相应的效果,但是建议使用$( ),理由如下:

exp 2

`1. # 将cmd1执行结果作为cmd2参数,再将cmd2结果作为cmd3的参数

2.  cmd3 $(cmd2 $(cmd1))

4.  # 如果是用反引号,直接引用是不行的,还需要作跳脱处理

5.  cmd3 `cmd2 \`cmd1\``` </pre>

${ }变量替换

一般情况下,$var${var}是没有区别的,但是用${ }会比较精确的界定变量名称的范围

1.  $ A=B

2.  $ echo ${A}B

3.  BB` </pre>

取路径、文件名、后缀
先赋值一个变量为一个路径,如下:

`file=/dir1/dir2/dir3/my.file.txt`
命令 解释 结果
${file#*/} 拿掉第一条 / 及其左边的字符串 dir1/dir2/dir3/my.file.txt
${file##*/} 拿掉最后一条 / 及其左边的字符串 my.file.txt
${file#*.} 拿掉第一个 . 及其左边的字符串 file.txt
${file##*.} 拿掉最后一个 . 及其左边的字符串 txt
${file%/*} 拿掉最后一条 / 及其右边的字符串 /dir1/dir2/dir3
${file%%/*} 拿掉第一条 / 及其右边的字符串 (空值)
${file%.*} 拿掉最后一个 . 及其右边的字符串 /dir1/dir2/dir3/my.file
${file%%.*} 拿掉第一个 . 及其右边的字符串 /dir1/dir2/dir3/my

记忆方法如下:

是去掉左边(在键盘上 # 在 $ 之左边)

上一篇 下一篇

猜你喜欢

热点阅读