根据找到的目录添加命令

根据找到的目录添加命令

有没有办法制作一个 bash 脚本来扫描dir0目录中的文件夹,以便使用以下定义创建命令dir1中找到的所有文件夹:dir0dir1-command

dir1-command() {
 cd dir0/dir1
 echo "inside dir0/dir1"
 cd -
}

编辑:我试图解决的具体问题是:我有一个名为 的文件夹scripts,其中包含scripts/haskell_script1和 等子文件夹scripts/haskell_script2。启动方式,比如说,scripts/haskell_script1如下:

haskell_script1() {
 cd scripts/haskell_script1
 stack exec haskell_script1 -- $@
 cd -
}

所以我想做的是,每次~/.bashrc来源时,扫描我的scripts文件夹并生成一堆表单命令haskell_scriptX以节省我的时间。这样我就不必为我创建的每个 haskell 项目/文件夹文件夹手动创建命令。

答案1

将其添加到您的 .bashrc 中:

for script in scripts/haskell_script*
do
  # strip off the leading "scripts/" portion
  script=${script##*/}
  eval "function ${script} { 
    cd scripts/${script}
    stack exec ${script} -- \$@
    cd -
  }"
done

您必须小心该定义中可能过早eval评估的任何内容,这就是我逃避$in 的原因$@

相关内容