Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在shell中执行for循环_Bash_Shell_For Loop_Awk_Scripting - Fatal编程技术网

Bash 如何在shell中执行for循环

Bash 如何在shell中执行for循环,bash,shell,for-loop,awk,scripting,Bash,Shell,For Loop,Awk,Scripting,我有以下文件: [Class:ABCD_EFGH_IJK] list.0=VALUE001* list.1=VALUE002* list.2=VALUE003* list.3=VALUE004* [Class:ABCD_EFGH_IJK:app:ABCD_EFGH_IJK] condition=true [Class:LMNO_PQRS_TUV] list.0=VALUE004* list.1=VALUE005* list.2=VALUE006* list.3=VALUE007* [Class

我有以下文件:

[Class:ABCD_EFGH_IJK]
list.0=VALUE001*
list.1=VALUE002*
list.2=VALUE003*
list.3=VALUE004*
[Class:ABCD_EFGH_IJK:app:ABCD_EFGH_IJK]
condition=true

[Class:LMNO_PQRS_TUV]
list.0=VALUE004*
list.1=VALUE005*
list.2=VALUE006*
list.3=VALUE007*
[Class:LMNO_PQRS_TUV:app:LMNO_PQRS_TUV]
condition=true
我有另一个脚本,它使用类名和列表值作为参数运行。例如:

./myscript VALUE001* ABCD_EFGH_IJK

我需要使用for循环来迭代每个类并获取每个值来运行我的脚本。我如何才能做到这一点?

这是您要求的:

$ awk -F'[]:=[]' '/Class:/{class=$3} /^list/{print $2, class}' file |
    xargs -n2 echo ./myscript
./myscript VALUE001* ABCD_EFGH_IJK
./myscript VALUE002* ABCD_EFGH_IJK
./myscript VALUE003* ABCD_EFGH_IJK
./myscript VALUE004* ABCD_EFGH_IJK
./myscript VALUE004* LMNO_PQRS_TUV
./myscript VALUE005* LMNO_PQRS_TUV
./myscript VALUE006* LMNO_PQRS_TUV
./myscript VALUE007* LMNO_PQRS_TUV

当您准备好实际调用
/myscript
时,请删除
回显。

这就是您要求的:

$ awk -F'[]:=[]' '/Class:/{class=$3} /^list/{print $2, class}' file |
    xargs -n2 echo ./myscript
./myscript VALUE001* ABCD_EFGH_IJK
./myscript VALUE002* ABCD_EFGH_IJK
./myscript VALUE003* ABCD_EFGH_IJK
./myscript VALUE004* ABCD_EFGH_IJK
./myscript VALUE004* LMNO_PQRS_TUV
./myscript VALUE005* LMNO_PQRS_TUV
./myscript VALUE006* LMNO_PQRS_TUV
./myscript VALUE007* LMNO_PQRS_TUV
当您准备好实际调用
/myscript
时,请删除
回显

sed
中使用保留空间的一个可怕的例子(太复杂)是

sed -nr '/\[Class:/ {s/\[Class:(.*)\]/\1/;h};/list/{G;s#.*=(.*)\n#./myscript \1 #p}' file
大写:
当您看到带有
类:
的行时,将类名复制到保留空间中。 当您看到带有
列表的行时,请将保留空间(类名)附加到当前行
并使用插入的换行符修改第一部分。
打印行

当替换字符串具有
\

\1

调用
()
中记住的匹配字符串
中使用保留空间的可怕示例(太复杂)如下

sed -nr '/\[Class:/ {s/\[Class:(.*)\]/\1/;h};/list/{G;s#.*=(.*)\n#./myscript \1 #p}' file
大写:
当您看到带有
类:
的行时,将类名复制到保留空间中。 当您看到带有
列表的行时,请将保留空间(类名)附加到当前行
并使用插入的换行符修改第一部分。
打印行

当替换字符串具有
\


\1

调用
()
中记住的匹配字符串在Python中执行此操作非常简单。但是你只想在shell中找到解决方案,对吗?嗨!是的,我想我想要一个使用shell.wrt
的解决方案,我需要使用for循环
-不,你肯定不需要。看见您的问题包括预期的输出以及您迄今为止尝试过的内容。=因此我们可以帮助您。使用Python进行此操作非常简单。但是你只想在shell中找到解决方案,对吗?嗨!是的,我想我想要一个使用shell.wrt
的解决方案,我需要使用for循环
-不,你肯定不需要。看见你的问题要包括预期的产出加上你迄今为止所做的尝试。