美文网首页
$( ) 用法整理

$( ) 用法整理

作者: __简书__ | 来源:发表于2019-02-17 23:46 被阅读0次
    • 来源于网上的《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} :若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} :若file 没设定或为空值,则将 my.file.txt 输出至 STDERR。 (非空值时不作处理)

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

    {A[0]} 可得到 a (第一个组数),{A[1]} 则为第二个组数...

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

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

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

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

    % :余数运算

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

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

    相关文章

      网友评论

          本文标题:$( ) 用法整理

          本文链接:https://www.haomeiwen.com/subject/djuneqtx.html