$( ) 用法整理

  • 来源于网上的《Shell十三问-ChinaUnix精华贴整理》

file=/dir1/dir2/dir3/my.file.txt

${#file} 可得到 27 ,因为 /dir1/dir2/dir3/my.file.txt 刚好是 27 个字节

${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

${file#*/} :拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt

${file:0:5} :提取最左边的 5 个字节:/dir1

${file:5:5} :提取第 5 个字节右边的连续 5 个字节:/dir2

${file/dir/path} :将第一个 dir 提换为 path:/path1/dir2/dir3/my.file.txt

${file//dir/path} :将全部 dir 提换为 path:/path1/path2/path3/my.file.txt

file 没有设定,则使用 my.file.txt 作传回值。(空值及非空值时不作处理)

file 没有设定或为空值,则使用 my.file.txt 作传回值。 (非空值时不作处理)

file 设为空值或非空值,均使用 my.file.txt 作传回值。(没设定时不作处理)

file 为非空值,则使用 my.file.txt 作传回值。 (没设定及空值时不作处理)

file 没设定,则使用 my.file.txt 作传回值,同时将 $file 赋值为my.file.txt 。 (空值及非空值时不作处理)

file 没设定或为空值,则使用 my.file.txt 作传回值,同时将 $file赋值为 my.file.txt 。 (非空值时不作处理)

file 没设定,则将 my.file.txt 输出至 STDERR。 (空值及非空值时不作处理)

file 没设定或为空值,则将 my.file.txt 输出至 STDERR。 (非空值时不作处理)

{A[*]} 可得到 a b c def (全部组数)

{A[1]} 则为第二个组数...

{#A[*]} 可得到 4 (全部组数数量)

{#A[3]} 可得到 3 (第四个组数(def)的长度)
A[3]=xyz 则是将第四个组数重新定义为 xyz

  • $(( )) 的用途:整数运算

+ - * / :分别为 "加、减、乘、除"。

% :余数运算

& | ^ !:分别为 "AND、OR、XOR、NOT" 运算

$ a=5; b=7; c=2
$ echo $(( a+b*c ))
19

你可能感兴趣的:($( ) 用法整理)