Persimmon08
V2EX  ›  OpenAI

Linux 命令执行顺序和机制, claude、chatgpt、copilot 和 gemini 给出了不同答案

  •  
  •   Persimmon08 · Mar 1, 2024 · 2162 views
    This topic created in 980 days ago, the information mentioned may be changed or developed.

    问题:

    /usr/bin/rclone copy "/home/SEND7/02_audio" "cc1-1:cc1-1/SEND7/01_audio" && sleep 1200
    

    上述命令中 sleep 会在 rclone 复制完毕才开始进行吗,还是说 sleep 命令会在 rclone 执行后也会立即执行,尽管此时 rclone 复制并没有完成?假如 rclone 复制完成需要 10 分钟,sleep 需要 20 分钟,那么上述命令执行完毕需要 20 分钟还是 30 分钟呢?


    关于上述问题,chatGPT3.5 ,claude ,Gemini 和 Copilot 给出的答案不尽相同,具体答案见附录

    chatGPT3.5:答案 30 分钟,回答逻辑有点混乱,见附录

    claude:答案 20 分钟,见附录

    gemini:答案 30 分钟,见附录

    copilot:答案 30 分钟,见附录

    我之前做过测试,下面的文件夹删除不会等待 rclone 复制完成后才开始,因此我加了一个 sleep 命令,所以我觉得答案可能是 20 分钟。

     /usr/bin/rclone copy "/home/SEND7/02_audio" "cc1-1:cc1-1/SEND7/01_audio"
     rm -rf "/home/SEND7/02_audio"
    

    但是我今天在另外一台服务器上做测试时,发现 sleep 好像在 rclone 完成后才开始的,所以有些疑惑

    11 replies  •  2024-03-01 22:26:43 +08:00
    hulooq
    hulooq
    Mar 1, 2024
    1
    > 来自 gemini-pro 的回答:

    ```
    `sleep` 命令会在 `rclone` 执行后立即执行,而不会等到 `rclone` 复制完毕。因此,上述命令执行完毕需要 20 分钟,而不是 30 分钟。
    ```
    Persimmon08
    Persimmon08
    OP
    Mar 1, 2024
    2
    @hulooq 所以正确答案应该是 20 分钟,对吧
    deorth
    deorth
    Mar 1, 2024 via Android❤️1
    3
    你谷歌下 bash &&啥意思就知道了。问 ai 半小时,谷歌五分钟
    Persimmon08
    Persimmon08
    OP
    Mar 1, 2024
    4
    @deorth
    那么`&&`右侧命令会等待左侧的`rclone copy`复制完成之后才进行吗?应该不是吧
    `rclone copy`命令执行之后,`&&`右侧命令就会执行,此时复制可能并没有完全完成
    coinbase
    coinbase
    Mar 1, 2024
    5
    chatgpt4 怎么说的
    pagxir
    pagxir
    Mar 1, 2024 via Android
    6
    答案 30 分钟。你看看这些
    test -f /hello && cat /hello
    如果同时执行是什么后果
    choury
    choury
    Mar 1, 2024 via Android
    7
    左侧命令成功则执行右边的命令,否则右侧命令不会执行,这不就是 shell 的短路嘛
    busier
    busier
    Mar 1, 2024 via iPhone
    8
    @Persimmon08 不是等待复制完成,严格的说是&& 左侧程序返回 0 (通常表示命令执行成功,未出错),右侧才会执行。
    所以具体情况,还要看左侧命令到底是执行了就立即返回结果,还是在等待。
    Persimmon08
    Persimmon08
    OP
    Mar 1, 2024
    9
    @busier 那上面问题的答案是 30 分钟还是 20 分钟呢
    Persimmon08
    Persimmon08
    OP
    Mar 1, 2024
    10
    @hulooq
    @coinbase
    @pagxir
    @choury
    @busier 实测结果为 10+20 = 30
    busier
    busier
    Mar 1, 2024 via iPhone
    11
    @Persimmon08 嗯
    你这种情况就是&&左侧命令执行成功后,返回 0 ,右侧才执行的。一个&才是左右两侧一起执行。

    你之前说的,第二条 rm 似乎立即执行了,那么考虑上一条命令是不是出错提前结束了。
    我写脚本都是要先 set -e 。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1749 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 93ms · UTC 15:55 · PVG 23:55 · LAX 07:55 · JFK 10:55
    ♥ Do have faith in what you're doing.