Drop1 2023-01-26 12:30 采纳率: 37.5%
浏览 27
已结题

[ -s {} ]和||的语法是什么意思呢?

Linux中,

find A/** -name "*.*" -exec bash -c "echo -n '文件名:{}|'&&[ -s {} ] && head -1 {}|tr '\n' '|'&&tail -1 {} || echo ''" \;
我的解答思路和尝试过的方法:

我认为就是像if else一样,但我Linux知识太少,想请教下能真正确认是不是真的像 if 这样的朋友来给个确定的答案。

我想要达到的结果:

问题1:这条linux命令中,[ -s {} ]和结尾的||是什么语法?有人用过吗?感谢!
问题2:我的原来的、不加[ -s {} ]的命令是:
find A/** -name "." -exec bash -c "echo -n '文件名:{}|'&&head -1 {}|tr '\n' '|'&&tail -1 {}" ;

我理解这个命令中的&&的作用是用于和后面的字符串连接起来,而加上[ -s {} ]后,[ -s {} ]后又有了一个&&,也是连接符吗?我的这个命令有些巧合,都是&&,所以,我就不明白最终的命令中:
find A/** -name "." -exec bash -c "echo -n '文件名:{}|'&&[ -s {} ] && head -1 {}|tr '\n' '|'&&tail -1 {} || echo ''" ;

[ -s {} ]后面中的&&和其它的&&是同样的东西吗?感谢!

  • 写回答

2条回答 默认 最新

  • 社区专家-Monster-XH 2023-01-26 12:57
    关注

    回答不易,有用请采纳谢谢!
    这是一条 Linux 中使用 find 命令的示例。
    [ -s {} ]:检查文件是否非空。
    || 是 Linux 中的逻辑或运算符。

    find A/** -name ".":从目录 A 开始查找所有文件名以 . 开头的文件。

    -exec bash -c:在查找到的文件上执行一个 bash 脚本。

    echo -n '文件名:{}|':输出文件名。

    head -1 {} 和 tail -1 {}:输出文件的第一行和最后一行。

    tr '\n' '|':将换行符替换为 |。

    || echo '':如果文件为空,则输出空字符串。

    ;:结束 -exec 参数。

    [ -s {} ] && head -1 {}|tr '\n' '|'&&tail -1 {} || echo '' 这段代码确实类似于 if-else 语句。
    
    其中,[ -s {} ] 是判断条件,相当于 if 语句中的条件判断。head -1 {}|tr '\n' '|'&&tail -1 {} 和 echo '' 分别相当于 ifelse 语句中的执行语句。其中 && 表示如果上一个命令执行成功才执行下一个命令,|| 表示如果上一个命令执行不成功才执行下一个命令。
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    Drop1 2023-01-26 13:04

    非常感谢!请问您说的“其中 && 表示如果上一个命令执行成功才执行下一个命令,|| 表示如果上一个命令执行不成功才执行下一个命令。”,上一个命令指的是什么?我迷惑有些,感谢!

    回复
    Drop1 2023-01-26 13:05

    非常感谢!能帮我看下第2个问题吗?是同一个问题,但希望能请您看一下,可以吗?感谢!

    回复
    社区专家-Monster-XH 回复 Drop1 2023-01-26 13:06

    麻烦先采纳一下哦!

    1
    回复
    展开全部6条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 2月2日
  • 已采纳回答 1月26日
  • 修改了问题 1月26日
  • 修改了问题 1月26日
  • 展开全部
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部