![创建一个带有参数的 bash 函数作为别名使用](https://linux22.com/image/1031078/%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%B8%A6%E6%9C%89%E5%8F%82%E6%95%B0%E7%9A%84%20bash%20%E5%87%BD%E6%95%B0%E4%BD%9C%E4%B8%BA%E5%88%AB%E5%90%8D%E4%BD%BF%E7%94%A8.png)
我意识到我的文件夹遵循特定的结构,并希望更快地使用 cd 访问它们,因此我尝试使这个别名/函数表现如下:
cdc glm 03
相当于
cd ~/Documents/7glm/week03
我尝试定义这样的函数(在 ./bashrc 中),但它不起作用。运行它不会粘贴参数:
cd ~/Documents/7/week
功能:
cdc () {
if [ $# -lt 2 "$1" ]; then
echo "Usage: cdc <folder_name> <folder_number>"
else
folder_name="$1"
folder_number="$2"
cd ~/Documents/7"$foldername"/week"$foldernumber"
fi
}
我做错了什么(对 bash 很陌生)?
谢谢!
答案1
您需要注意两个问题:
[ ... ]
第一个是运算符周围的测试括号内的参数太多-lt
...即2 "$1"
。第二个是设置和扩展中的参数命名不一致...例如
folder_name
和"$foldername"
。
...因此,你的功能应该是:
cdc () {
if [ $# -lt 2 ]; then
echo "Usage: cdc <folder_name> <folder_number>"
else
folder_name="$1"
folder_number="$2"
cd ~/Documents/7"$folder_name"/week"$folder_number"
fi
}