#!/bin/bash
read -p "Enter your MO or attribute name: " name
grep -q $name *.txt #judge the input whether exists or not. if it exists , $? will equal 0, if not , $? will equal 1.
echo $?
if [ $? -eq 0 ];then
echo "Send to file 2"
echo $name >> 2.txt
else
echo "Send to file 1"
echo $name >> 1.txt
fi
以下是计划进度
Enter your MO or attribute name: sssqq
1 #means no file contains "sssqqq"
Send to file 2
Enter your MO or attribute name: chenghuang
0 #means some file contains "chenghuang"
Send to file 2
如您所见,无论输入是否存在于文件中,它们都将被发送到2.txt。但我的目的是如果输入存在于文件中,输入将被发送到文件2,如果没有,它将被发送到文件1。 if-else有什么问题?
答案 0 :(得分:0)
将结果保存到变量并使用它进行操作:
res=$?
echo $res
if [ $res -eq 0 ];then
echo "Send to file 2"
echo $name >> 2.txt
else
echo "Send to file 1"
echo $name >> 1.txt
fi
问题在于,您调用的echo $?
会将之前的结果$?
替换为自己的新结果。
答案 1 :(得分:0)
您的问题是使用$?
。 $?
始终保存最后一个命令的返回值。运行echo $?
后,if语句中的$?
保留了返回值echo
。