V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
MarkLazy
V2EX  ›  问与答

dockfile 里命令为啥这样写,高手或者熟悉 Linux 命令的老哥请进!

  •  
  •   MarkLazy · Feb 25, 2022 · 1584 views
    This topic created in 1526 days ago, the information mentioned may be changed or developed.

    背景是,有一个 dockerfile ,里面是运行 java 程序
    cloud.tar.gz 的结构如下:

    parent/  
      bin/  
        start.sh  
      lib/  
        app.jar  
    
    FROM *************
    
    WORKDIR /
    
    COPY cloud.tar.gz ./
    
    RUN export DST_DIR=`tar tf cloud.tar.gz | awk  -F / 'NR==1{print $1}'`  && \
    
        tar zxf cloud.tar.gz  && \
    
        dos2unix ./$DST_DIR/bin/*.sh && \
    
        chmod -R 755 ./$DST_DIR
    
    EXPOSE 9000
    
    CMD /script/start.sh //`tar tf cloud.tar.gz | awk  -F / 'NR==1{print $1}'`/bin/start.sh
    

    最后一行那里,有两个地方不明白:

    1. 为啥可以a.sh b.sh,两个脚本并排写,用空格隔开啊,我试了一下,这样只有第一个脚本会执行
    2. 第二个脚本那里,我为啥是//双杠开头啊,感觉也不像转义啊
      求高手解惑
    4 replies    2022-02-27 03:12:37 +08:00
    wd
        1
    wd  
       Feb 25, 2022 via iPhone
    并排写就是参数吧 这其实你自己写一个简单实验下就行呀
    MarkLazy
        2
    MarkLazy  
    OP
       Feb 25, 2022 via Android
    @wd 感谢老哥,我看了第一个脚本,第二个脚本确实是参数,传给了第一个,感谢。
    但是那个路径为啥是双杠呀,这个还是没懂
    wd
        3
    wd  
       Feb 25, 2022 via iPhone
    @qaqLjj 我记得是和单个的 / ,没啥区别
    dangyuluo
        4
    dangyuluo  
       Feb 27, 2022
    打开 Shell 调试就什么都知道了

    set -x
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   947 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 18:40 · PVG 02:40 · LAX 11:40 · JFK 14:40
    ♥ Do have faith in what you're doing.