从命令行读取输入

从命令行读取输入

尝试使用“读取命令”从命令提示符本身接受用户输入,但我的脚本似乎没有前进

echo "Do you want to continue?(yes/no)"
read -p $1
if [ "$1" == "yes" ]
then
sleep 5s
echo ""
echo " move ahead"
else
    echo ""
    echo "Skipping The Step.."
    echo ""
sleep 5s
fi

我想像这样执行脚本..

sh script.sh yes
sh script.sh no  

在上面的脚本中添加了 -p ,一切似乎都工作得很好。这是我真正的问题。我有另一个脚本 test.sh 调用 script.sh。这就是我输入的方式

cat  test.sh yes
#!/bin/bash
echo "execute the below script"
sh script.sh $1



sh test.sh yes  

这种方式不起作用,因为脚本会选择默认的“否”并继续前进。有任何想法吗。

答案1

$1, $2… - 命令行位置参数,不能像read [-p] $1或任何其他方式分配,除了

set -- firsr_arg second_arg …

对于您的情况,可以测试参数是否存在,然后测试它们

while [ -z "$REPLY" ] ; do
    if [ -z "$1" ] ; then
         read -p "Do you want to continue?(yes/no) "
    else
         REPLY=$1
         set --
    fi
    case $REPLY in
        [Yy]es) sleep 5s
                echo -e "\n move ahead" ;;
         [Nn]o) echo -e "\nSkipping The Step..\n"
                sleep 5s ;;
             *) echo "Wrong answer. Print 'yes' or 'no'" 
                unset REPLY ;;
    esac
done

相关内容