bash - 在 BASH 中循环打印和执行命令

标签 bash

在 BASH 中,我想做这样的事情:

#!/bin/bash                                                                     

HOST="blah"
USER="foo"
REMOTE_ROOT="${HOST}:~${USER}/"

REP_NAME=`basename $1`
TARGET_NAME="${REP_NAME}.git"

CMD1="git clone --bare $1 $TARGET_NAME"
CMD2="touch ${TARGET_NAME}/git-daemon-export-ok"
CMD3="scp -r $TARGET_NAME $REMOTE_ROOT"
CMD4="rm -rf $TARGET_NAME"

for i in {1..4}
do
  CMD="${CMD${i}}"
  echo "$CMD"
  `$CMD`
done

也就是说,我想循环一个命令列表,显示正在执行的命令,然后执行它。

我不知道如何进行双重解引用(CMD="${CMD${i}}"在 BASH 中不合法)。

或者,我很乐意做类似的事情:

for CMD in "CMD1 CMD2 CMD3 CMD4"
do
  echo $$CMD
done

但这当然也不是正确的语法。

最佳答案

CMDS[1]="git clone --bare $1 $TARGET_NAME"
CMDS[2]="touch ${TARGET_NAME}/git-daemon-export-ok"
CMDS[3]="scp -r $TARGET_NAME $REMOTE_ROOT"
CMDS[4]="rm -rf $TARGET_NAME"

# ...

for x in 1 2 3 4
do
    ${CMDS[x]};
done

关于bash - 在 BASH 中循环打印和执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1203326/

相关文章:

linux - 找到多条线模式并在第一次出现后停止

linux - bash + linux机器中的进度对话框栏

linux - 使用 shell 打开 telnet 并传递命令

linux - Bash 减法故障 : var=$((var-1)) gives ridiculous values

linux - 即使循环指向输出文件,echo 命令也会显示在屏幕上

linux - Linux 程序的外部禁用信号

linux - 如何将shell变量传递给shell脚本中的awk命令

Linux 脚本困惑

python - 从 shell 脚本调用 Python 函数

linux - 如何使用 shell 脚本递归获取所有 jpg 文件