听起来很复杂,但事实并非如此。我正在忙于在bash脚本中构建一个菜单,作为case语句的一部分,我试图调用我之前创建的另一个脚本来编辑文件,并且它正在破坏。这是一个例子:
#!/bin/bash
PS3="Please choose an option: "
options=("Do this" "Do nothing")
select opt in "${options[@]}"
do
case $opt in
"Do this")
read -p "Please enter the file name:`echo $'\nE9> '`" FILENAME
getscript $FILENAME
break
;;
"Do nothing")
break
;;
esac
done
我从中得到的错误如下:getscript: command not found
为了说明这是有效的,我从正常的命令提示符运行了getscript,它仍然有效:
$ getscript randomfilename.txt
done
稍微详细一点,以防万一......有问题的getscript.sh
脚本位于/usr/local/bin
,我在当前用户目录的.bashrc中为它创建了一个别名,允许我仅拨打getscript
。
请帮帮忙?
答案 0 :(得分:1)
Biffen是正确的,别名似乎不适用于剧本。所以我需要做的就是在最后添加.sh,它完美地工作......为了说明,以防有人在将来需要这个:
PS3="Please choose an option: "
options=("Do this" "Do nothing")
select opt in "${options[@]}"
do
case $opt in
"Do this")
read -p "Please enter the file name:`echo $'\nE9> '`" FILENAME
getscript.sh $FILENAME
break
;;
"Do nothing")
break
;;
esac
done
像魅力一样工作:)。谢谢你们
答案 1 :(得分:0)
将这些行添加到~/.bashrc
function getscript() {
/usr/local/bin/getscript.sh "$@"
}
export -f getscript
在此之后
$ source ~/.bashrc
这将解决问题。如果您没有source
包,则需要安装它。