【问题标题】:Changing the directory in swtich case - shell script (windows)在 switch case 中更改目录 - shell 脚本(windows)
【发布时间】:2020-11-16 09:03:57
【问题描述】:

我正在使用 windows 10 和 gitbash 运行以下脚本

#!/bin/sh

echo "Select - 1 or 0"
while :
do
  read INPUT_STRING
  case $INPUT_STRING in
    1) cd /d/Workspace
       break
       ;;

    0) echo "Exit"
       break
       ;;

    *) echo "Please try again"
       ;;
  esac
done
echo 
echo "Bye!"

当我选择选项 1 时,我想移动到指定目录,但似乎没有执行 cd 选项,不确定原因。我怎样才能让它发挥作用?

另外,根目录在c盘/c/Users/username

【问题讨论】:

    标签: bash shell switch-statement git-bash


    【解决方案1】:

    从问题看来,预期的行为是运行脚本,并更改​​调用进程的工作目录。

    当前工作目录特定于每个进程。当脚本修改 当前工作目录,它只影响它自己的工作目录。这也将影响将来从正在运行的 shell 启动的任何进程。它不会影响系统中的其他进程,它们将继续使用它们当前的工作目录。

    对于您的顶级shell是git-bash的特定情况,您可以使用source script-name.sh在父进程内执行上述脚本。采用这种方式会修改当前shell进程的工作目录。

    【讨论】:

    • 我使用别名来执行脚本alias repo='sh /d/Workspace/bash-script-workspace/talk.sh',但最终执行了所有操作,但我没有切换到目录。你能帮我举个例子吗?我的父目录也位于 c 驱动器中,我如何从父目录运行位于 d 驱动器中的脚本?
    • 考虑使用答案中建议的“源”,而不是“sh”:alias repo='source /d/Workspace/bash-script-workspace/talk.sh'
    猜你喜欢
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    相关资源
    最近更新 更多