在 ZSH For 循环中编写 Alias 仅选择最终循环迭代
Writing Alias in a ZSH For Loop selects only the final loop iteration
我正在编辑我的 .zshrc
文件,为我在大学修读的不同课程创建别名。我目前在 5 门课程中这样做:
alias 301='cd /Users/<...>/university/ELEC301'
因为我所有的课程都有相同的父文件夹,所以我试图将此作为一个 for
循环来执行,而不是使用不同的课程代码使用 10 行相同的命令。
我已经试过了,但我最终得到了一个别名,它只对数组的最后一个元素起别名,尽管我的 echo
命令打印出我期望的内容:
courses=(301 302 303)
for course in $courses; do
echo $course
alias $course='cd /Users/<...>/university/ELEC${course}'
done
在我的 ZSH 终端中,当我 运行 别名 301
时,它始终将我定向到我的 303 文件夹,或者数组的最后一个元素,尽管我 echo
打印:
301
302
303
我试过以不同的方式编写数组,使用中间变量更改回显的顺序。我不确定发生了什么,感谢您的帮助。
通过将变量 course
放入 single-quotes '
可以防止 shell 扩展它。
您需要使用 double-quotes "
。
那个:
courses=(301 302 303)
for course in $courses; do
echo "$course"
alias $course="cd /Users/<...>/university/ELEC$course"
done
可以正常工作。
我正在编辑我的 .zshrc
文件,为我在大学修读的不同课程创建别名。我目前在 5 门课程中这样做:
alias 301='cd /Users/<...>/university/ELEC301'
因为我所有的课程都有相同的父文件夹,所以我试图将此作为一个 for
循环来执行,而不是使用不同的课程代码使用 10 行相同的命令。
我已经试过了,但我最终得到了一个别名,它只对数组的最后一个元素起别名,尽管我的 echo
命令打印出我期望的内容:
courses=(301 302 303)
for course in $courses; do
echo $course
alias $course='cd /Users/<...>/university/ELEC${course}'
done
在我的 ZSH 终端中,当我 运行 别名 301
时,它始终将我定向到我的 303 文件夹,或者数组的最后一个元素,尽管我 echo
打印:
301
302
303
我试过以不同的方式编写数组,使用中间变量更改回显的顺序。我不确定发生了什么,感谢您的帮助。
通过将变量 course
放入 single-quotes '
可以防止 shell 扩展它。
您需要使用 double-quotes "
。
那个:
courses=(301 302 303)
for course in $courses; do
echo "$course"
alias $course="cd /Users/<...>/university/ELEC$course"
done
可以正常工作。