有没有办法制作一个 bash 脚本来扫描dir0
目录中的文件夹,以便使用以下定义创建命令dir1
中找到的所有文件夹:dir0
dir1-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 的原因$@
。