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'
最后的命令,用单引号括起来就行,中间的几行无所谓。