新手:更改目录的脚本

Newbie: Script to change directories

以下是我正在尝试的更大脚本的片段。我只想让这部分识别参数是一个目录,然后 cd 到该目录:即 ./larj /etc.

#!/bin/ksh
# Filename: larj.sh

if [ $# -gt 1 ]; then
    echo "0 or 1 arguments allowed."
    exit
fi
if [ -f "" ]; then
    echo "directory only."
    exit
else
    if [ -d "" ]; then
        cd 
    fi
fi

当我运行以/etc为参数的脚本时,似乎没有任何反应;它保持在同一个目录中没有错误。 有人对如何让它更改目录有任何建议吗?

谢谢

cd无法工作的问题是,当您以./larj /etc执行脚本时,cdsub-shell中执行。所以当你执行脚本时,它改变了subshell的工作目录,对当前shell没有影响。

所以你可以像. ./larj /etc一样执行它。

参考Why doesn't “cd” work in a bash shell script?

cd 发生在脚本的 shell 内。

当脚本结束时,它shell 退出,您return 到运行 脚本之前的目录。要更改目录,您可以

mkdir testdir
. ./your_script.sh testdir

在脚本结束时,您将被移动到目录 testdir。