Linux 在新bash实例中以脚本形式执行一组命令
我正在尝试在新的Linux 在新bash实例中以脚本形式执行一组命令,linux,bash,shell,unix,heredoc,Linux,Bash,Shell,Unix,Heredoc,我正在尝试在新的bash会话中执行一组命令: exec bash <<- EOF ln -snf $JDK_REPO'/jdk'$1 $CURRENT; JAVA_HOME=$(readlink -f $CURRENT); echo $JAVA_HOME; export PATH= $JAVA_HOME/bin:$PATH; exec usejdk EOF 我试着用调试,我得到: 使用这样做对我很有用: cmd=" ln -snf $JD
bash
会话中执行一组命令:
exec bash <<- EOF
ln -snf $JDK_REPO'/jdk'$1 $CURRENT;
JAVA_HOME=$(readlink -f $CURRENT);
echo $JAVA_HOME;
export PATH= $JAVA_HOME/bin:$PATH;
exec usejdk
EOF
我试着用调试,我得到:
使用这样做对我很有用:
cmd="
ln -snf $JDK_REPO'/jdk'$1 $CURRENT;
JAVA_HOME=$(readlink -f $CURRENT);
echo $JAVA_HOME;
export PATH= $JAVA_HOME/bin:$PATH;
exec usejdk"
bash <<< "$cmd"
cmd=”
ln-snf$JDK_回购'/JDK'$1$当前;
JAVA_HOME=$(readlink-f$当前);
echo$JAVA_HOME;
导出路径=$JAVA_HOME/bin:$PATH;
执行官usejdk“
bash和Makefile一样,必须使用制表符缩进。很有趣,谢谢@glennjackman,我将再次尝试使用herdoc方法,以确保我没有犯空格杀手的错误。谢谢@Lynch,我看到养成总是引用变量的习惯是件好事。否则会发生奇怪的事情。bash
总是会发生奇怪的事情。
Use <<- instead of << if you want to indent the end token.
cmd="
ln -snf $JDK_REPO'/jdk'$1 $CURRENT;
JAVA_HOME=$(readlink -f $CURRENT);
echo $JAVA_HOME;
export PATH= $JAVA_HOME/bin:$PATH;
exec usejdk"
bash <<< "$cmd"