使用自动程序可以执行需要用户输入的shell脚本(密码)?Shell脚本应在当前选定的文件夹中执行。我编写了一个“运行Shell脚本”操作,如下图所示:
关于外壳动作:
cd $1
~/scripts/pgpsign
首先,我转到当前选定的文件夹,然后执行我的脚本,据我所知这是失败的,因为它需要在继续之前处理输入。
在脚本的完整代码下面(在Scala中)
#!/bin/sh
exec scala "$0" "$@"
!#
import sys.process._
object PGPSign {
def main(args: Array[String]) {
print("Please type passphrase : ")
val passPhrase = readLine()
signFilesInDirectory(new java.io.File("."), passPhrase.toString)
}
def signFilesInDirectory(dir: java.io.File, passPhrase: String) {
if(!dir.exists())
throw new java.io.FileNotFoundException
if(!dir.isDirectory())
throw new RuntimeException("Expecting directory")
println("Signing files in directory: " + dir.getAbsolutePath())
for{file <- dir.listFiles
if !file.isDirectory //ignoring directories
val fileName = file.getName()
if !fileName.startsWith(".") //ignoring hidden files
if !fileName.endsWith(".asc") //ignoring signature files
} {
println("- Signing file " + file)
("gpg -ab --yes --batch --passphrase " + passPhrase + " " + fileName).!!
}
}
}
pgpsign
脚本上发布更多信息,特别是期望输入什么信息吗?看起来好像在期待输入,但是您什么也没给。