關於shell script 一個奇怪的問題 - Linux

Table of Contents

小弟最近才開使用shell script (bash)
但發現了一個怪問題
很多指令再terminal 直營都沒問題
但是寫在script 裡面執行就會出錯

譬如 我想定義一個string array
如果在terminal 直接輸入
declare -a arr=('001' '002' '003')
就沒問題

但如果存成檔名test1.sh 的script 再執行
就會出現以下錯誤

test1.sh: 1: test1.sh: Syntax error: "(" unexpected

請問友人知道怎麼解決嗎?

--

All Comments

Caitlin avatarCaitlin2013-07-04
我試過沒問題耶
Leila avatarLeila2013-07-06
請先檢查你使用什麼shell script, bash沒問題
Queena avatarQueena2013-07-08
你可能是使用到sh執行
Daniel avatarDaniel2013-07-10
script第一行改成#!/bin/bash應該就可以.
Daph Bay avatarDaph Bay2013-07-12
我剛用其他cluster 跑就可以, 用我自己的電腦就不行
Emily avatarEmily2013-07-14
先確認login shell與path echo $SHELL $BASH_VERSION
Rosalind avatarRosalind2013-07-15
我確認了 /bin/bash 4.2.45(1)-release
不知道是不是版本的問題?
Enid avatarEnid2013-07-18
你的/bin/sh是bash嗎?
試試看 bash test1.sh 這樣執行,或是#!/bin/bash
Quintina avatarQuintina2013-07-20
此問題主要是/bin/sh實際上為dash - 只提基本功能.
改為#!/bin/bash即可解覺問題.
Blanche avatarBlanche2013-07-23
可是airjaguar確認他的login shell是bash耶!
Rachel avatarRachel2013-07-28
login shell不見得是/bin/sh呀
Ingrid avatarIngrid2013-07-31
像是debian/ubuntu,預設login shell是bash,但/bin/sh是dash
Hedwig avatarHedwig2013-08-02
不然查一下存檔的標準輸入有無走樣 cat < test1.sh
Tristan Cohan avatarTristan Cohan2013-08-02
喔~最近開始使用bash,所以先前都是用sh囉!
Franklin avatarFranklin2013-08-03
所以Linux system執行sh檔是用/bin/sh來run,而不是login
Isla avatarIsla2013-08-08
shell?如果是那真是我觀念上的盲點阿!!
Valerie avatarValerie2013-08-12
大多數腳本開頭是寫#!/bin/sh,所以會用/bin/sh跑
改#!/bin/bash的話就會用/bin/bash跑
Audriana avatarAudriana2013-08-16
至於/bin/sh到底是哪種shell...通常會跟login shell一樣,但
Wallis avatarWallis2013-08-21
debian/ubuntu就是很顯著的不一樣的例子囧rz
之前遇到bash與dash之間有個for語法不相容的時候才知道有這
回事....
Dorothy avatarDorothy2013-08-22
我也是那時候才知道login shell可以跟/bin/sh不一樣囧
Callum avatarCallum2013-08-22
原來如此,值得了!
Heather avatarHeather2013-08-25
sh一定是bourne compatible shell,不可能變成cshell系列
Oliver avatarOliver2013-08-26
樓上沒錯...
Isla avatarIsla2013-08-27
應該是 bash 太強一堆擴充語法的關係? XD