if else bash 语句语法

if else bash 语句语法

因此,由于某种原因,无论我如何修改测试语句并且不知道该怎么做,它总是返回 ssh 或“ok”。我留下了下面的代码。

echo 'Wanna connect to the raspberry pi? (y/n)'
read $sssh

if [[ $sssh == "y" ]]
then 
        ssh [email protected]
else 
        echo 'ok'
fi

答案1

read实用程序需要变量的名称作为其参数。使用 时read $sssh,您可以为其指定变量的值sssh而不是变量的名称。

我假设您想要读取该sssh变量,在这种情况下您应该使用read sssh.

您修改后的脚本(包含一个迭代的读取循环,直到用户给出有效输入):

#!/bin/bash

while true; do
    read -p 'Connect to RPi? (y/n): ' yesno
    case $yesno in
        y) ssh ...; break ;;
        n) echo ok; break ;;
        *) echo invalid input >&2
    esac
fi

或者更长,

#!/bin/bash

while true; do
    read -p 'Connect to RPi? (y/n): ' yesno
    if [[ $yesno == 'y' ]]; then
        ssh ...
        break
    elif [[ $yesno == 'n' ]]; then
        echo ok
        break
    fi
    echo invalid input >&2
fi

相关内容