如何在bash脚本

时间:2015-09-03 12:28:10

标签: linux bash shell select

听起来很复杂,但事实并非如此。我正在忙于在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

请帮帮忙?

2 个答案:

答案 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包,则需要安装它。