sudo オプションなし

sudo オプションなし

他のシェルスクリプトで使用される変数に格納される「読み取り」を使用して、一部のデータを入力するようにユーザーに要求しています。しかし、何らかの理由で動作しません。

これは私がシェルから得るものですscript1.sh

#!/bin/bash
read -p "Enter Your Full Name: " Name
export Name
sudo bash script2.sh

script2.sh

#!/bin/bash
echo $Name

私の理解は、sudo bash script1.shを実行すると、入力を取得して変数に入れてから、エクスポートを使用して別のスクリプトにエクスポートできることです。

ところで、私はBashバージョン4.3.11を使用しています。

誰もが私が間違っていることを説明できますか?私の目標は、ユーザーにフルネームを尋ね、他のスクリプトでフルネームを使用することです。

ベストアンサー1

sudo オプションなし

source コマンドを使用して、元の環境と同じ環境で別の bash スクリプトを実行できます。 (子プロセスを開始しないでください)

script1.sh

#!/bin/bash
read -p "Enter Your Full Name: " Name
source script2.sh

script2.sh

#!/bin/bash
echo $Name

-

Sudoと一緒に

あなたの例がうまくいかない理由はsudoによるものです。 Sudo -Eオプションを使用して、スーパーユーザー環境の環境変数を保存できます。

script1.sh

   #!/bin/bash
   read -p "Enter Your Full Name: " Name
   export Name 
   sudo -E bash script2.sh

script2.sh

#!/bin/bash
echo $Name

おすすめ記事