我想使用 shell 脚本为每个输入文件运行 java 程序
我有一个输入文件目录,我想使用 shell 脚本在控制台上执行这些文件,然后在新的输出目录中创建输出文件。
#!/bin/bash
FILES="inputs/*.txt"
for f in $FILES
do
basename=${f%.*}
java main accounts.txt rentalunits.txt
cat "$f"
done >> $basename.out
我尝试使用两个文本文件运行此代码
sh testscript
,但它只创建一个输出文件并卡在 java 程序中的第一个扫描仪上。
I have a directory of input files and I want to use a shell script to execute these files onto the console and then create output files in a new output directory.
#!/bin/bash
FILES="inputs/*.txt"
for f in $FILES
do
basename=${f%.*}
java main accounts.txt rentalunits.txt
cat "$f"
done >> $basename.out
I tried running this code using
sh testscript
for two text files but it only creates one output file and gets stuck at the first scanner in the java program.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
只是猜测
此外,无需指定解释器,因为您有 shebang
Just guessing
Also, no need to specify the interpreter as you have the shebang
您已经得到了答案,但是循环遍历 glob 模式文件的正确方法是:
即不要将模式放入变量中:它会强制您将变量不加引号,这可能会产生意想不到的后果。
如果你想使用变量,在 bash 中使用数组:
现在,由于 bash 特定的功能,你必须使用
bash ./testscript
而不是sh
You've got your answer, but the correct way to loop over the files of a glob pattern is:
i.e. don't put the pattern in a variable: it forces you to leave your variables unquoted which may have unintended consequences.
If you want to use a variable, in bash use an array:
and now, because of the bash-specific features, you have to use
bash ./testscript
notsh