【发布时间】:2015-07-18 06:14:57
【问题描述】:
我已删除旧问题,希望这个简化且更精确的版本能够奏效。
我有一个文件:
#Works Command
cd /tmp
mkdir folder
echo "it worked" >file
cat file
#Not working Command
cd /tmp
mkdir file
echo "it didn't work" >wrong
cat wrong
命令组少至 1 组,多至 20 组,但每组命令都以“Command”结尾的注释作为前缀
我希望完成的是将每个注释设置为一个变量,当调用该变量时将执行命令。
回显 $var1 时的期望结果
cd /tmp
mkdir folder
echo "it worked" >file
cat file
我尝试过使用:
while read -r line; do var+=("$line"); done < <(awk '/Command/,/Command/' file)
将 cmets 设置为变量,但我还没有找到用于命令分组的可行解决方案。
我尝试过使用:
for i in {1..5}
do
awk '/'"${var[$i]}"'/,/'"${var[$i+1]}"'/' file |egrep -vi "${var[$i]}|${var[$i+1]}"
done
希望这将有助于澄清事情。我很抱歉发布了一个没有明确需要做什么的问题。
【问题讨论】:
-
代码与输出不匹配!
-
如果
i指向最后一个块,$var[$i+1]为空。! -
您说(如果我理解正确的话)
${var[2]}扩展为cat bunny fish,但您的示例输入中根本没有出现bunny这个词。如果没有实际可行的示例,我们将很难确定您要做什么。考虑修改您的示例输入和输出,以便它们实际上是一致的...... -
当我在 shell 中看到一个关于“导出变量”的问题时,我希望它是关于范围和环境管理的。据我所知,这与主题完全无关。也许最好尝试找到一个避免使用艺术术语而不是其技术含义的标题?
-
...如果您真正的根本问题是 FAQ #24,那么这与之前在此站点上多次询问和回答的问题非常相似——但措辞却让人难以辨认。
标签: bash for-loop awk while-loop