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