使用read -p命令保存响应并覆盖脚本中的配置文件

因此,我有一个配置文件,在收到用户的提示响应后,我想对其进行更改。

read -p 'Your RPC username: ' RPC_USER
sleep 1s
echo -e "${YELLOW}"
echo "$RPC_USER"
echo "----------------"
echo "Is this correct?"
echo -e "${RED}"
select yn in "Yes" "No"; do
    case $yn in
        Yes ) break;;
        No ) read -p 'New RPC username: ' RPC_USER
            echo "$RPC_USER"
    esac
done

在此之后,我想更改文件配置:test.conf。所以我尝试:

sed -i '1i RPC_username="$RPC_USER"' ~/test.conf

但是我唯一得到的是:

RPC_username="$RPC_USER"

同样是要能够在脚本执行期间将这些用户输入变量直接粘贴到配置文件中。

非常感谢您的帮助!

xu414816349 回答:使用read -p命令保存响应并覆盖脚本中的配置文件

变量不解析在单引号内。您必须使用双引号。

或直接将变量插入命令:

read -p 'Your RPC Username: ' RPC_USER
sleep 1s
echo -e "${YELLOW}"
echo "$RPC_USER"
echo "----------------"
echo "Is this correct?"
echo -e "${RED}"
select yn in "Yes" "No"; do
    case $yn in
        Yes ) break;;
        No ) read -p 'New RPC Username: ' RPC_USER
            echo "$RPC_USER"
            sed -i '1i RPC_USERNAME="'$RPC_USER'"' ~/test.conf
    esac
done

但是请注意,这是不安全的,因为如果用户用单引号输入名称-将会制动命令。所以你仍然需要逃脱

本文链接:https://www.f2er.com/3147900.html

大家都在问