linux中如何将多条命令写入在一行中,其中包括while语句,同时,在k8s的command中如何来使用

我们有如下的命令:

 

echo "Error response from daemon: driver failed programming external connectivity on endpoint sad_liskov" > 1.log
while :
do
  cat 1.log >> 2.log
  cat 2.log >> 1.log
  cat 1.log 
  cat 2.log
done 

这是个多行的命令,那如果我想要,将这些写在一行,该怎么做呢?

 

我们知道,不同的命令之间用分号(;)分开,就可以了,那么对于while这种语法结构的怎么做呢?

 

其实,很简单······

 

只需要将while中本来是多行的,每个也用分号分开就可以了,我们继续往下看下,改写之后是什么样的······

 

echo "Error response from daemon: driver failed programming external connectivity on endpoint sad_liskov" > 1.log;while : ;do cat 1.log >> 2.log ;cat 2.log >> 1.log ;cat 1.log ;cat 2.log;done

为了方便展示,我们单独贴出来,将分隔的部分,标记出来

 

echo "Error response from daemon: driver failed programming external connectivity on endpoint sad_liskov" > 1.log;while : ;do cat 1.log >> 2.log ;cat 2.log >> 1.log ;cat 1.log ;cat 2.log;done

 

其中标记黄色的是,不同的语句之间的分隔,标记红色的是while语法中,每行的分隔。

 

这样,我们就可以在一行中,写下整个的命令了,这个在k8s的deployment中,会在command中用到,比如:

 

        - /bin/bash
        - -c
        - 'echo "Error response from daemon: driver failed programming external connectivity  on endpoint sad_liskov" > 1.log; while : ; do cat 1.log >> 2.log; cat 2.log >> 1.log; cat 1.log; cat 2.log;done'

 

在被k8s解析后,变成如下的命令:

      - command:
        - /bin/bash
        - -c
        - 'echo "Error response from daemon: driver failed programming external connectivity  on
          endpoint sad_liskov" > 1.log; while : ; do cat 1.log >> 2.log; cat 2.log
          >> 1.log; cat 1.log; cat 2.log;done'

 

最后的命令,用单引号括起来就行,中间的几行无所谓。

posted @ 2022-06-23 11:50  Zhai_David  阅读(1115)  评论(0编辑  收藏  举报