ユーザー入力を含むソーススクリプト

ユーザー入力を含むソーススクリプト

私は同様のスクリプトを持っています

#!/bin/bash
echo -n "User: "
read -e username
echo -n "Password: "
read -es password

export http_proxy="http://$username:$password@localhost:40080"
export https_proxy="http://$username:$password@localhost:40080"

$@

unset http_proxy
unset https_proxy

ユーザー/パスワードを読み、エージェントをエクスポートし、エージェントが必要なコマンドを実行してからクリーンアップします。効果があるしかし、私はこれを試してみます:

#!/bin/bash
echo -n "User: "
read -e username
echo -n "Password: "
read -es password

export http_proxy="http://$username:$password@localhost:40080"
export https_proxy="http://$username:$password@localhost:40080"

したがって、source proxyscript毎回ユーザーを入力したり通過したりすることなく、セッション全体でプロキシを使用でき、入力を待つがエクスポートできます。http://:@localhost:40080


もしそうなら、私が何を間違っているか、どのように動作させることができますか?

(引数として渡して$1/$2または類似のものを使用できることを知っていますが、記録でパスワードを開く必要がないようにしたいと思います)


編集/解決策:

bash答えに基づいて、小さな変更だけで互換性がありますzsh

#!/bin/bash
echo -n "User: "
read username
echo -n "Password: "
read -s password

export http_proxy="http://$username:$password@localhost:40080"
export https_proxy="http://$username:$password@localhost:40080"

デフォルトではロゴeのみを削除しました。

ベストアンサー1

なぜ動作しないのか分かりません。私はうまくいきます。

$ source foo.sh
User: terdon
Password: ~ $   ## I entered the password here, you can add an echo to clear the line

$ echo "$http_proxy"
http://terdon:myPass@localhost:40080
$ echo "$https_proxy" 
http://terdon:myPass@localhost:40080

read -p代わりにを使用しechoてnullを追加して行を消去しechoますが、それ以外の方法は機能するはずです。

#!/bin/bash
read -p "User: " -e username
read -p "Password: " -es password
echo ""

export http_proxy="http://$username:$password@localhost:40080"
export https_proxy="http://$username:$password@localhost:40080"

. foo.sh今(またはbashを使用しているので)これを行うことができ、期待どおりに動作するはずsource foo.shです。

おすすめ記事