我尝试了多种场景,但这些事情更令人头疼。我试着写这个bash也是一样的,但需要在我需要执行的同一个文件中进行更改。有人可以帮助我。Linux - 如何从另一个文件夹访问/执行文件,而不是更改文件夹
#!/bin/bash -p
if [ $# -lt 1 ]; then
echo "No arguments provided"
exit 0
fi
CURRENT_DIR=`pwd`
EXEC_DIR=`dirname "$1"`
FILENAME="`basename $1`"
cd $EXEC_DIR
CMD="./$FILENAME ${@:2}"
$CMD
cd $CURRENT_DIR
我需要一些两个班轮与我需要执行的同一个文件一起工作。
使用*子shell *来改变目录并执行程序?就像'(cd $ EXEC_DIR; ./$FILENAME $ {@:2})''?这将导致子shell在新目录中执行程序,但脚本仍然会继续而不会更改目录。 –
另外,您能否详细说明您显示的脚本存在的问题?它出什么问题了? –
不清楚,为什么不简单地使用'“$ 1”$ {@:2}'来执行文件,这可能是因为绝对路径与文件名一起传递。如果你不想永久改变为'EXEC_DIR',你总是可以使用'pushd'和'popd'(与你使用'cd'相同的方式,但是不需要返回目录需要指定。 –