我需要知道如何做一些事情: 1.如何使用变量执行ls命令并使用grep过滤结果,然后将结果放入另一个变量
我搜索教程,但无法找到类似的示例,而且我尝试使用语法,但可以使其工作。 所以这里的脚本是我知道错误的语法,但我写的只是为了更清楚我需要什么。
如果有人能告诉我如何在bash中正确连接,我会很高兴。
非常感谢:)
#!/bin/bash
executable=$1;
outputs_inputs=$2;
inputs=ls $outputs_inputs | grep "in";
outpus=ls $outputs_inputs | grep "out";
for i in $inputs; do
myoutput=$executable < i;
for j in $outputs; do
if(opendiff $myoutput j){
echo j is equal to i's output
}
done;
done;
答案 0 :(得分:1)
问题始于您尝试将命令输出分配给变量。为此,您需要command substitution,正如Peter和chepner所建议的那样 - 反引号``
或首选的新形式$(...)
,否则您只需分配字符串。即使是字符串,由于空白和缺少引用,你分配错误。
inputs=ls $outputs_inputs | grep "in";
^ ----------- ^ ^ --------------------------------- ----- ^那些是两个不同的东西
总结一下,你需要改变
inputs=ls $outputs_inputs | grep "in";
outpus=ls $outputs_inputs | grep "out";
这样的事情
inputs=$(ls $outputs_inputs | grep "in";)
outpus=$(ls $outputs_inputs | grep "out";)
为什么你首先使用 ls 超出了我和本回复的范围。另外,请检查if-then-else语法,因为您的语法是其他内容。