linux - BASH 组合简单程序得到一些输出

标签 linux bash

我有下面的程序来访问 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/

相关文章:

linux - 如何回显文件名?

bash - Docker 在 docker-compose up 上的主机中运行脚本

linux - 脚本不会在 Linux 中同时执行

linux - 如何查找文件名中编号最大的文件

linux - 如何从终端获取 CSV 尺寸

linux - 在 Linux 上使用信号与 POSIX 线程

c++ - c/c++ 的交互式控制台编程?

linux - 使用 gdb/gdbserver 跳过库调用

ruby - Ruby HTTP 流量的代理

linux - bash 脚本在后台运行固定数量的作业