新手:更改目录的脚本
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
执行脚本时,cd
在sub-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。
以下是我正在尝试的更大脚本的片段。我只想让这部分识别参数是一个目录,然后 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
执行脚本时,cd
在sub-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。