新手:更改目录的脚本

时间:2017-06-23 15:44:57

标签: linux scripting ksh

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

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

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

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

由于

2 个答案:

答案 0 :(得分:1)

cd正在脚本的shell中发生。

当脚本结束时,它将退出shell,并在运行脚本之前返回目录。要更改目录,您可以

mkdir testdir
. ./your_script.sh testdir

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

答案 1 :(得分:-1)

cd无法正常工作的问题是,当您cd执行脚本时,sub-shell会执行./larj /etc。因此,当您执行脚本时,它会更改子shell的工作目录,并且不会影响当前的shell。

因此您可以将其作为. ./larj /etc执行。

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