script1.sh
次のソースがあるとしますscript2.sh
。
スクリプト1:
#!/bin/bash
# script 1
echo "Doing some stuff..."
bash script2.sh
echo "Done"
スクリプト2:
#!/bin/bash
# script 2
printf "\r [ \033[0;33m?\033[0m ] What is your name? "
read -e name
echo "$name"
そして通話bash script1.sh
もエレガントに機能します。
私は次のようなことをしようとしています。ここそして実行しますが、スクリプトをwget -O - https://raw.githubusercontent.com/caarlos0/dotfiles/install/script/install | bash
実行すると失敗します。script/bootstrap
read -e
対話を強制するためにこのフラグを試してみましたが、-i
成功しませんでした。
どんなアイデアがありますか?
ベストアンサー1
アイデア:bash
標準入力でパイプを使用して実行しています。その後、標準入力から読み込むように要求します。それは動作しません。
代わりに名前付きパイプを使用しますか?
ETA:それとも違うかも…
mkfifo ~/tmp-pipe
wget -O - https://raw.githubusercontent.com/caarlos0/dotfiles/install/script/install > ~/tmp-pipe &
bash ~/tmp-pipe
rm ~/tmp-pipe
この時点で、既存のファイルの一部が破損していないことを確認するには、一時ファイルを使用することをお勧めします。処理すべき混乱が少なくなります。
P=$( mktemp )
wget -O - https://raw.githubusercontent.com/caarlos0/dotfiles/install/script/install > $P &
bash $P
rm $P
はい。わかりません。