获得所需输出的建议
Suggestions to get desired output
需要您的帮助来完成以下脚本以获得所需的输出。
- 检查文件是否存在且不为空---工作
- 从该文件读取输入---工作
对于该文件中的每一行 运行 下面的循环 ---working
for i in 01 02 03 04 05
do
query -se=$i "q blabla node='$line'" >/dev/null
我的问题是,如果在 01 02 03 04 05 的任何一个中找到该行,那么它不应该转到 failed.lst,它应该只显示在 success.lst, 我写的 IF 条件不会发生这种情况。
建议一些输入以在不进行重大更改的情况下实现此目标。
echo " enter file name "
read file
if [[ -f "$file" && -s "$file" ]]
then
echo " file exist, and not empty "
while IFS='' read -r line
do
echo "Querying --->"$line""
for i in 01 02 03 04 05
do
query -se=$i "q blabla node='$line'" >/dev/null
if [ $? -ne 0 ]
then
echo "$line" >>failed.lst
else
echo "$line" >>success.lst
fi
done
done<"$file"
else
echo "File doesn't exist/empty"
fi
当你想query
对for列表中的所有值执行时,你可以使用这种方法。
while IFS='' read -r line
do
echo "Querying ---> $line"
query_ok=1 # some false value
for i in 01 02 03 04 05
do
query -se=$i "q blabla node='$line'" >/dev/null
if [ $? -eq 0 ]
then
query_ok=0 # true
fi
done
if [ ${query_ok} -ne 0 ]
then
echo "$line" >>failed.lst
else
echo "$line" >>success.lst
fi
done<"$file"
当你发现一个工作时不需要测试 i
的所有值时,你可以使用 break
.
while IFS='' read -r line
do
echo "Querying ---> $line"
query_ok=1 # some false value
for i in 01 02 03 04 05
do
query -se=$i "q blabla node='$line'" >/dev/null
if [ $? -eq 0 ]
then
query_ok=0 # true
break # do not test other values of i
fi
done
if [ ${query_ok} -ne 0 ]
then
echo "$line" >>failed.lst
else
echo "$line" >>success.lst
fi
done <"$file"
题外话:您还可以使用 var 来计算 query
成功的值的数量。
需要您的帮助来完成以下脚本以获得所需的输出。
- 检查文件是否存在且不为空---工作
- 从该文件读取输入---工作
对于该文件中的每一行 运行 下面的循环 ---working
for i in 01 02 03 04 05 do query -se=$i "q blabla node='$line'" >/dev/null
我的问题是,如果在 01 02 03 04 05 的任何一个中找到该行,那么它不应该转到 failed.lst,它应该只显示在 success.lst, 我写的 IF 条件不会发生这种情况。
建议一些输入以在不进行重大更改的情况下实现此目标。
echo " enter file name "
read file
if [[ -f "$file" && -s "$file" ]]
then
echo " file exist, and not empty "
while IFS='' read -r line
do
echo "Querying --->"$line""
for i in 01 02 03 04 05
do
query -se=$i "q blabla node='$line'" >/dev/null
if [ $? -ne 0 ]
then
echo "$line" >>failed.lst
else
echo "$line" >>success.lst
fi
done
done<"$file"
else
echo "File doesn't exist/empty"
fi
当你想query
对for列表中的所有值执行时,你可以使用这种方法。
while IFS='' read -r line
do
echo "Querying ---> $line"
query_ok=1 # some false value
for i in 01 02 03 04 05
do
query -se=$i "q blabla node='$line'" >/dev/null
if [ $? -eq 0 ]
then
query_ok=0 # true
fi
done
if [ ${query_ok} -ne 0 ]
then
echo "$line" >>failed.lst
else
echo "$line" >>success.lst
fi
done<"$file"
当你发现一个工作时不需要测试 i
的所有值时,你可以使用 break
.
while IFS='' read -r line
do
echo "Querying ---> $line"
query_ok=1 # some false value
for i in 01 02 03 04 05
do
query -se=$i "q blabla node='$line'" >/dev/null
if [ $? -eq 0 ]
then
query_ok=0 # true
break # do not test other values of i
fi
done
if [ ${query_ok} -ne 0 ]
then
echo "$line" >>failed.lst
else
echo "$line" >>success.lst
fi
done <"$file"
题外话:您还可以使用 var 来计算 query
成功的值的数量。