在我正在构建的脚本中,我在将 pid 保存到文件时遇到了问题。
如果在终端中运行以下命令:
nohup mvn spring-boot:run > $HOME/logs/app.log 2>&1 & echo $! > $HOME/pids/app.pid
我无法执行with xargs
如下命令:
echo "dirA" | xargs -L 1 -I {} sh -c "cd '{}'; echo 'Changed directory to' '{}';
nohup mvn spring-boot:run > $HOME/logs/app.log 2>&1 & echo $! > $HOME/pids/app.pid; "
app.logs 文件生成成功,内容正确,同时生成 app.pid 文件,内容为空。
我将非常感激任何能帮助我解决这个问题的帮助。
问候,兰多。
答案1
命令周围的双引号sh -c "..."
允许$!
通过交互式 shell 进行扩展。
尝试
echo "dirA" | xargs -L 1 -I {} sh -c '
cd "$1"; echo "Changed directory to $1";
nohup mvn spring-boot:run > $HOME/logs/app.log 2>&1 & echo $! > $HOME/pids/app.pid;
' sh {}
{}
在大多数 shell 中无需引用。