我有下面的程序来访问 TEXT 文件并获取下面的变量并将其放入某个命令但实际上它不起作用,因为 if 条件给了我太多参数
y=`grep -i UID TEXT2 | awk '{print($2)}'
exec 5< <(awk '{IGNORECASE=1}/UID/ {print $2}' TEXT)
exec 6< <(awk '{IGNORECASE=1}/LOGICAL/ {print $4}' TEXT)
while read i <&5 && read x <&6
do
if [ $y = $x ]
then
echo "naviseccli -h 10.1.1.37 sancopy -create -incremental -name copy_$x -srcwwn" \
"$i -destwwn" \ "$y -verify -linkbw 2048" >> OUTPUT
else
echo " no matched UID"
fi
done
============================================= =============================
现在它工作正常但只打印 2 个变量而不是 3 个(i 和 x 和 y)(x 和 y)现在只打印所以问题是什么,我在下面附上了新代码
exec 5< <(awk '{IGNORECASE=1}/UID/ {print $2}' TEXT)
exec 6< <(awk '{IGNORECASE=1}/LOGICAL/ {print $4}' TEXT)
exec 7< <(awk '{IGNORECASE=1}/UID/ {print $2}' TEXT2)
exec 8< <(awk '{IGNORECASE=1}/LOGICAL/ {print $4}' TEXT2)
if [ "$x" == "$z" ]
then
while read i <&5 && read x <&6 i && read y <&7 && read z <&8
echo "naviseccli -h 10.1.1.37 sancopy -create -incremental -name copy_$x -srcwwn $i -destwwn $y -verify -linkbw 2048" >> OUTPUT
done
else
echo " no matched LUN number "
fi
最佳答案
在这里使用引号:
if [ "$y" = "$x" ]
如果 $x
或 $y
中有空格,则需要引号使它们成为一个参数,否则将被 shell 解释器视为不同的参数。
关于linux - BASH 组合简单程序得到一些输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20159996/