首页 > 解决方案 > 在 shell 脚本中使用 && 运算符

问题描述

我正在尝试编写一个 shell 脚本并将输出存储在 .csv 文件中。我必须在我的 for 循环中使用两个条件,但是当我尝试使用 && 运算符来检查这两个条件时,它会引发语法错误。个别条件按预期工作正常,但使用 && 不起作用。我只需将数据写入 CSV 文件一次。有人可以建议。其他选项可能是为两个条件创建两个 CSV 并以某种方式合并它们,但这会增加代码行数。我敢肯定,这可能是处理这个问题的一种优雅方式,只是无法到达那里。

./test1.sh ./test1.sh:第 5 行:&&' ./test1.sh: line 5: [line in du -sh /stats/*/*&& line1 in du -sh /stats/accounts/*];do' 的意外标记附近出现语法错误

我的示例代码如下

#!/bin/sh
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
echo "A1,A2,A3,A4,A5" > demo.csv
for [line in `du -sh /stats/*/*` && line1 in `du -sh /stats/accounts/*`];do
    a1=$(echo $line |awk '{print $2}'|sed -e 's/^\(\/.*\/\)*.*/\1/'|sort -hr| head -10)
    a2=$(echo $line1 |awk '{print $2,$1}'|sed -e 's/\/stats\/.*\// /g' -e 's/-.*/ /g'|sort -hr| head -10)
    a3=$(echo $line1 |awk '{print $2}' | sed 's/\/stats\/.*\// /g'|sort -hr| head -10)
    a4=$(echo $line |awk '{print $1}'|sort -hr|head -10)
    echo ''$(hostname)','$a1','$a2','$a3','$a4'' >> demo.csv
done
IFS=$SAVEIFS
code=$? 
exit $code

标签: linuxfor-in-loopand-operator

解决方案


推荐阅读