我有一个 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
是的,参数可以通过脚本中的位置变量来引用。
EG-
#!/bin/bash
if [ $# -ge 1 ]
then
echo First argument is $1
fi
用./my_script argument1
...调用它
所以你必须$1
使用$9
,如果你需要超过 9 个,你可以使用shift
,好吧.. 转移它们。
综上所述,在命令行上接受密码通常是不好的,因为它可以在用户的历史记录以及 、 等的输出中看到。ps
如果top
是我,我会提示用户输入密码作为脚本的一部分。