【发布时间】:2020-07-22 18:16:55
【问题描述】:
我知道我们可以通过 java 中的运行时在 bash 中传递参数。我有一个特殊情况,我想将 $(date +"%Y""%m") 之类的参数作为 bash 中的参数传递,然后将其计算并存储在 bash 中的变量中。考虑以下 java 代码:
String[] cmd = {"/bin/bash", "/user/username/test.sh", "firstparameter", "date +%Y", "folder_$(date +%Y)";
Process process = Runtime.getRuntime().exec(cmd);
上面的命令运行shell脚本test.sh。我的脚本如下:
first=$1
year=`$2`
foldername=`$3`
echo $first
echo $year
echo $foldername
我在我的 bash 代码中包含了反引号,以便可以首先执行通过 java 程序传递的参数。该命令的输出将是:
firstparameter
2020
$(date: not found
我希望 bash 的文件夹名称为 folder_2020。我们怎样才能做到这一点?我尝试了很多次,但都没有成功。任何帮助将不胜感激。
【问题讨论】:
-
顺便说一句,在您的代码中,您将脚本运行为 sh,而不是 bash。
-
嗨@user1934428,我不明白你的问题。如果您能稍微解释一下,我是 bash 新手。
-
你将cmd的第一个参数设置为'sh',这意味着你的脚本是由'sh'运行的。如果您将第一个参数设置为“foofoo”,则脚本将由“foofoo”运行。如果你想通过 bash 运行它,你必须将第一个参数设置为 'bash'。
-
谢谢@user1934428 ..我理解你的问题..它应该是一个bash脚本..我将修改我的问题并将第一个参数更改为bash ...
标签: java bash parameters scripting