他のファイルを暗号化するbashスクリプトがあります。
スクリプトは(暗号化するために)各ファイルのパスワードを求めるメッセージを表示します。
各ファイルごとに手動で入力する必要がないように、スクリプトに引数としてスクリプトに必要な情報を提供する方法はありますか?
私は試した:
cat "input" | ./Script.sh
cat "input.txt" | ./Script.sh
echo "input" | ./Script.sh
printf 'word1\nword2\nword3\n' | ./script
編集:Volker Siegelの答えで問題を解決しました。
- 設置期待:
sudo apt-get install expect
- 自動期待を実行します。
autoexpect -f file-to-save-automation script-to-automate
- 生成されたファイルを実行します。
./file-to-save-automation
答え1
このアプリが必要ですexpect
。あなたがすべきことはその主な目的です。使用プログラムを作成する
ために使用する履歴autoexpect
。
記録されるのは(tcl)のスクリプトで、パスワード入力を含むスクリプトを実行できます。
完全に機能しない場合は、生成されたスクリプトを編集できます。この言語はもはや広く使われていませんが、非常に簡単です。必要なものを確認するには、コード例をご覧ください。
あなたのケースに合った使用例を簡単に見つけることができるはずです。
答え2
はい、パラメータはスクリプトの位置変数を介して参照できます。
はい -
#!/bin/bash
if [ $# -ge 1 ]
then
echo First argument is $1
fi
それに./my_script argument1
電話してください
$1
したがって、使用する必要があります$9
。 9つ以上が必要な場合は使用できますshift
。まあ..転送してください。
つまり、コマンドラインでパスワードを受け入れるのは、一般的にユーザー履歴との出力などで見ることができるため、良くありません。私の場合はps
、top
スクリプトの一部としてユーザーにパスワードの入力を求められます。