關於shell切換的問題 - Linux

Table of Contents

各位好

想請問一下

我有一個test.sh

其中test.sh的第1行有#!/bin/bash來表示我要切換到bash來執行

如果我的shell預設的是/bin/tcsh

用./test.sh #用tcsh shell去執行,執行過程中切換到bash執行
然後再換成 sh ./test.sh #用sh shell去執行,執行過程中切換到bash執行

這兩種方式都是用bash shell去執行程式碼

但是結果卻不一樣...

想請問為什麼會這樣?

我的程式碼如下:

#!/bin/bash

j=0
read -p "number" num
number[$j]="$num"

用sh test.sh 會出現 number[0]=5: not found #可是我第1行有#!/bin/bash...

用./test.sh則執行結果正常 #都是切換到bash 為什麼這一行就正常?

另外想請教的是

似乎tcsh跟sh都不支援這樣的陣列寫法

再網路上看到的幾乎都是bash的寫法

看到這篇

http://yuanann.pixnet.net/blog/post/14988564-shell_script-%3Aarray-

照他的寫法寫也沒辦法用sh執行阿...一樣出現not found

請問有什麼寫法可以支援sh或tcsh呢?

謝謝

--
~宅男的四個徵兆~
∠□ ○ ! * \○/ ★    (○ ?
╦╦└□ " ○□═ □   □>
║║√√ ╦══╦ ∥    |\
一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己

--

All Comments

Robert avatarRobert2012-04-01
./script是讓作業系統自己選要用哪一個shell,在這裡是bash
sh script你就直接選用/bin/sh來跑了,不會看#!那一行
Regina avatarRegina2012-04-06
原來如此
Brianna avatarBrianna2012-04-07
所以用./script的話 就會看#!那一行嘛?
Isla avatarIsla2012-04-09
是啊
Frederica avatarFrederica2012-04-12
那請問一下 如果我在sh用array的話 要怎麼使用呢?
Doris avatarDoris2012-04-16
c shell系例和 bourne shell不太可以相通
Olive avatarOlive2012-04-16
sh沒有array, 頂多是把a1, a2, a3, a4之類的變數當array用
Xanthe avatarXanthe2012-04-19
Thanks a lot
Dinah avatarDinah2012-04-21
sh不一定等於bash 像ubuntu的sh是dash