在shell可以执行,在script里不能执行.[弱弱的问题,新手阿]

sh/bash/dash/ksh/zsh等Shell脚本
回复
谦笔小新
帖子: 14
注册时间: 2009-01-09 21:14

在shell可以执行,在script里不能执行.[弱弱的问题,新手阿]

#1

帖子 谦笔小新 » 2009-08-08 14:26

各位大侠 ,提一个弱弱的问题,read 在script里面不能执行。
详情:我在终端里面用read读取一个数组

代码: 全选

read -p "Read some words" -a  array
可以读取数组,
但是我写到script里面

代码: 全选

#!/bin/bash
read -p "Read some words" -a  array
却提示

代码: 全选

read: 2: Illegal option -a
什么原因呢?各位不吝指教阿,在google查了一个小时了还没查出...
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

Re: 在shell可以执行,在script里不能执行.[弱弱的问题,新手阿]

#2

帖子 cnkilior » 2009-08-08 14:36

代码: 全选

#!/bin/bash
read -p "Read some words"  array
就可以了。

虽然我不知道-a什么用!
谦笔小新
帖子: 14
注册时间: 2009-01-09 21:14

Re: 在shell可以执行,在script里不能执行.[弱弱的问题,新手阿]

#3

帖子 谦笔小新 » 2009-08-08 14:42

cnkilior 写了:

代码: 全选

#!/bin/bash
read -p "Read some words"  array
就可以了。

虽然我不知道-a什么用!
-a是read 一个数组的
不用-a就只read 一个字符串阿
这个在终端测试可以read一个数组,但是script就不行,哪位大侠指点下阿~
谦笔小新
帖子: 14
注册时间: 2009-01-09 21:14

Re: 在shell可以执行,在script里不能执行.[弱弱的问题,新手阿]

#4

帖子 谦笔小新 » 2009-08-08 21:19

我还发现一个问题
var=1
ls $var* 可以list我文件夹中的1.txt 1.sh
但是写到script里面又不行了~又认不出来$var*是什么东西了~不知道这是为啥呀~
头像
O_O_BOT
帖子: 2461
注册时间: 2009-05-20 19:32

Re: 在shell可以执行,在script里不能执行.[弱弱的问题,新手阿]

#5

帖子 O_O_BOT » 2009-08-08 21:31

#!/bin/bash
read -p "test:" -a array
for v in "${array[@]}";do
echo $v
done

没问题哦
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
[url]irc://irc.freenode.net/ubuntu-cn[/url]
谦笔小新
帖子: 14
注册时间: 2009-01-09 21:14

Re: 在shell可以执行,在script里不能执行.[弱弱的问题,新手阿]

#6

帖子 谦笔小新 » 2009-08-12 10:53

O_O_BOT 写了:#!/bin/bash
read -p "test:" -a array
for v in "${array[@]}";do
echo $v
done
+ read -p test: -a array
read: 1: Illegal option -a
test: 5: Bad substitution

Shell 已返回2

为什么我的有问题呢?
sunsoft1021
帖子: 5
注册时间: 2009-08-19 10:21

Re: 在shell可以执行,在script里不能执行.[弱弱的问题,新手阿]

#7

帖子 sunsoft1021 » 2009-09-09 11:19

ls -l `echo $SHELL`
看看输出,可能你在终端的shell不是bash,可能会有这个问题,因为shell不同。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 在shell可以执行,在script里不能执行.[弱弱的问题,新手阿]

#8

帖子 aerofox » 2009-09-09 12:17

谦笔小新 写了:
O_O_BOT 写了:#!/bin/bash
read -p "test:" -a array
for v in "${array[@]}";do
echo $v
done
+ read -p test: -a array
read: 1: Illegal option -a
test: 5: Bad substitution

Shell 已返回2

为什么我的有问题呢?
你是怎么执行这个脚本的?如果是用“sh 文件名”的方式,那么改为“bash 文件名”。
回复