启动脚本testyon.sh后:
#!/bin/sh
function yon {
while true; do
echo "Start proc?[Y/n]: "
read -r "[Y/n]: " yn
case $yn in
[Yy]*) echo "Starting" ; return 0 ;;
[Nn]*) echo "Stopped" ; return 1 ;;
esac
done }
我收到此错误:
$ sh testyon.sh testyon.sh: 2: testyon.sh: function: not found testyon.sh: 7: testyon.sh: Syntax error: newline unexpected (expecting ")") $
如何解决这个问题?
答案 0 :(得分:2)
我想当你调用sh
时运行的shell都会被函数语法抛出。声明函数的可移植方式是
yon () {
while true; do
echo "Start proc?[Y/n]: "
read -r "[Y/n]: " yn
case $yn in
[Yy]*) echo "Starting" ; return 0 ;;
[Nn]*) echo "Stopped" ; return 1 ;;
esac
done
}
参考:POSIX规范,Shell命令语言,Function Definition Command。
两个评论:
read -r
命令中的提示是否完成任何操作。实际上,它似乎阻止了首先将任何内容读入yn
。/data/data/com.termux/files/usr/bin/bash
,这可以防止你的功能问题。