我有这样的东西...
我有三个文件。
两个包含相同变量但值不同的文件,以及第三个将cd
之类的命令执行到特定位置的文件
我的第三个文件称为init.sh
,看起来像
###############
# works perfectly if I do it this way
source db/abc.sh # changes variable
source db/commands.sh
source db/def.sh # changes variable
source db/commands.sh
###############
# does not work
RUN_COMMANDS=$(source db/commands.sh)
source db/1107556.sh # changes variable
${RUN_COMMANDS} # this does not run
source db/kunyuan.sh # changes variable
${RUN_COMMANDS} # this runs
原因是我这样做是因为我可以更改变量,然后运行相同的命令,因为命令是相同的,但变量的值只是不同。
希望我没有做任何愚蠢的事情来思考这种使用bash的方式。
在此先感谢您的帮助或建议。
答案 0 :(得分:3)
此:
MyASyncClass.AsyncResponse response = new MyASyncClass.AsyncResponse() {
@Override
public void processFinish(String output) {
// do something with the output.
}
};
表示“运行命令RUN_COMMANDS=$(source db/commands.sh)
,并将其输出(=打印到标准输出的所有内容)存储在变量source db/commands.sh
中”。
相反,您似乎想要:
RUN_COMMANDS
将RUN_COMMANDS=(source db/commands.sh) # note -- no '$'
source db/1107556.sh
"${RUN_COMMANDS[@]}"
source db/kunyuan.sh
"${RUN_COMMANDS[@]}"
设置为包含RUN_COMMANDS
和source
的 array ,然后将该数组作为命令运行(等同于运行命令{ {1}}。
也就是说,您可能要考虑编写一个shell函数:
db/commands.sh