如何将 bash 脚本从 1 长行改进为更好的方法?

cyb*_*3rZ 3 command-line bash

我有一个脚本可以打开终端并打开 5 个选项卡,执行某个命令,然后转到某个工作目录。

#!/bin/sh

gnome-terminal --tab --title="Zookeeper" --profile Hold -e "sh -c '/home/kafka_2.11-0.8.2.2/bin/zookeeper-server-start.sh /home/kafka_2.11-0.8.2.2/config/zookeeper.properties'" --tab --title="Kafka" --profile Hold -e "sh -c 'sleep 5; /home/kafka_2.11-0.8.2.2/bin/kafka-server-start.sh /home/kafka_2.11-0.8.2.2/config/server.properties'" --tab --title="APP-Binaries" --profile Hold --working-directory="/home/app-binaries" --tab --title="APP-DB" --profile Hold --working-directory="/home/prod/db"
Run Code Online (Sandbox Code Playgroud)

[![在此处输入图像描述][1]][1]

将所有内容放在一条线上很难维护。我如何使它更好,以便于阅读?

我试过了

#!/bin/sh

Tab=""

Tab+=("--tab --title='Zookeeper' --profile Hold -e 'sh -c /home/kafka_2.11-0.8.2.2/bin/zookeeper-server-start.sh /home/kafka_2.11-0.8.2.2/config/zookeeper.properties'")
Tab+=( "--tab --title='Kafka' --profile Hold -e 'sh -c 'sleep 5; /home/kafka_2.11-0.8.2.2/bin/kafka-server-start.sh /home/kafka_2.11-0.8.2.2/config/server.properties'")
Tab+=(" --tab --title='APP-Binaries' --profile Hold --working-directory='/home/app-binaries'")
Tab+=(" --tab --title='APP-DB' --profile Hold --working-directory='/home/prod/db'")

# echo "${Tab[@]}"

gnome-terminal "${Tab[@]}"

exit 0
Run Code Online (Sandbox Code Playgroud)

到目前为止它还没有工作!我愿意接受你们对我的任何建议。我只是想学习和改进它。

谢谢,

小智 8

您可以使用\将长命令拆分为多行。

例子:

#!/bin/bash

echo "Hello World!"
echo \
"Hello World!"
Run Code Online (Sandbox Code Playgroud)

运行此脚本会导致

$ ./test.sh 

Hello World!
Hello World!
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您可以使用类似

#!/bin/bash    

gnome-terminal \
--tab --title="Zookeeper" --profile Hold -e "sh -c '/home/benu/Downloads/kafka_2.11-0.8.2.2/bin/zookeeper-server-start.sh /home/benu/Downloads/kafka_2.11-0.8.2.2/config/zookeeper.properties'" \
--tab --title="Kafka" --profile Hold -e "sh -c 'sleep 5; /home/benu/Downloads/kafka_2.11-0.8.2.2/bin/kafka-server-start.sh /home/benu/Downloads/kafka_2.11-0.8.2.2/config/server.properties'" \
--tab --title="SSC" --profile Hold -e "sh -c 'sleep 15; cd ~/gitnewssc/benu-ssc-binaries; ./startSSC.sh'" --working-directory="/home/benu/gitnewssc/benu-ssc-binaries" \
--tab --title="SSC-Binaries" --profile Hold --working-directory="/home/benu/gitnewssc/benu-ssc-binaries" \
--tab --title="SSC-DB" --profile Hold --working-directory="/home/benu/SSC-V2/ssc-db"
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

217 次

最近记录:

7 年,9 月 前