以下是我正在尝试的更大脚本的片段。我只是希望这部分能够识别出该参数是一个目录,然后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作为参数运行脚本时,似乎没有任何反应;它保持在同一目录中,没有错误。 任何人都有任何建议如何让它改变目录?
由于
答案 0 :(得分:1)
cd正在脚本的shell中发生。
当脚本结束时,它将退出shell,并在运行脚本之前返回目录。要更改目录,您可以
mkdir testdir
. ./your_script.sh testdir
在脚本结束时,您将被移动到目录testdir。
答案 1 :(得分:-1)
cd
无法正常工作的问题是,当您cd
执行脚本时,sub-shell
会执行./larj /etc
。因此,当您执行脚本时,它会更改子shell的工作目录,并且不会影响当前的shell。
因此您可以将其作为. ./larj /etc
执行。