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