其他討論區 > 課後溫習+認證考試

8/2 shell script

(1/2) > >>

freebase:
(以下題目請通過才往下看..^^  3Q)
     1. 一般情況下,我們使用文字編輯器建立一個檔案的時候。
        建立檔案者擁有該檔案的讀寫權,而其他使用者擁有該檔
        的讀取權。

        若要使編輯好的 shell script可以執行,請修改該權限。
        使檔案可以執行。
       
   Q  >此時該下什麼指令?

     2.比如說我們現在有一個scripting的絕對路徑如下
       /home/test/123.sh
       有兩種指令的下法,兩種各有所不同。
       (1) $ source 123.sh
       (2) $ cd /home/test
           $ chmod +x
       (3) $ 123.sh
       有誰要來說說兩者不同的地方嗎?^^
       沒有的話明天小弟在來講講看..^^
       當然摟..^%^不一定是正確的就是
   
  2.test
    首先我們要先知道 TURE 的值是零  而其他 false都是非零  (不是只有1而已)
    [ EXPRESSION ]     <  == test的寫法1
    $test 123 -a 345   <  == test的寫法2
 
    EXP1 -a EXP2        exp1 和 2都成立才等於 ture
    EXP1 -o EXP2        兩者其中有一者成立就  ture

    $test 123 = 456  
    $echo $?
    得到的結果為0 =ture 其他則是false

    $ [ !123 -eq 456 -a 123 = 456] &&  echo xxx
    $ echo $?

HaWay:

--- 引述: "freebase" ---(以下題目請通過才往下看..^^  3Q)
     1. 一般情況下,我們使用文字編輯器建立一個檔案的時候。
        建立檔案者擁有該檔案的讀寫權,而其他使用者擁有該檔
        的讀取權。

        若要使編輯好的 shell script可以執行,請修改該權限。
        使檔案可以執行。
       
   Q  >此時該下什麼指令?

--- 引用結尾 ---

答案是不是在第二題出現啦~? ^^"

--- 引述: "freebase" ---

     2.比如說我們現在有一個scripting的絕對路徑如下
       /home/test/123.sh
       有兩種指令的下法,兩種各有所不同。
       (1) $ source 123.sh
       (2) $ cd /home/test
           $ chmod +x
       (3) $ 123.sh
       有誰要來說說兩者不同的地方嗎?^^
       沒有的話明天小弟在來講講看..^^
       當然摟..^%^不一定是正確的就是
 
--- 引用結尾 ---

抱歉!我不是鑽牛角尖,不過 (3) 的方法是不是少了什麼?
(3) $ . 123.sh,因為 PATH 裡面都通常不會有 PATH:. ^^"

--- 引述: "freebase" ---
  2.test
    首先我們要先知道 TURE 的值是零  而其他 false都是非零  (不是只有1而已)
    [ EXPRESSION ]     <  == test的寫法1
    $test 123 -a 345   <  == test的寫法2
 
    EXP1 -a EXP2        exp1 和 2都成立才等於 ture
    EXP1 -o EXP2        兩者其中有一者成立就  ture

    $test 123 = 456  
    $echo $?
    得到的結果為0 =ture 其他則是false

--- 引用結尾 ---

嘿嘿!我的 $? 回傳是 1 ?? :lol:


--- 引述: "freebase" ---
    $ [ !123 -eq 456 -a 123 = 456] &&  echo xxx
    $ echo $?
--- 引用結尾 ---

這邊我在測試的時候會發生一個問題,當然我是在
command line 的模式下 key in 會發生就是
shell 會將 [ !123 解釋為 !123
於是就變成 history 的命令啦~ XD
不過我還沒測試 shell script 是不是也會這樣
是不是要用 [ ! 123 -eq ......... ] && echo xxx 阿??
還有 456] 後面一定要空格喔 "456 ]" ^^

freebase:
$ [ ! 123 -eq 456 -a 123 = 456 ] && echo xxx


是這樣麼~...>"<

小圭:
$ [_ !_ 123 -eq 456 -a 123 = 456_ ] && echo xxx

呵..紅色這三個地方需要有IFS才行 ^^

freebase:
shell 之 function觀念..^^



function afunc
{
 echo in function $0 $1 $2 // $0 $1 $2 都是function內定意的
 var1="in function" // 宣告 var1  = in function
 echo var1: $var1  // echo
}
///以上為一個function
var1="out function" //這是在 function外定意的 var1
echo var1 = $var1  //這時echo出來的[var1] 值是在function外定意的var1
afunc funcarg1 funcarg2 //跑function的內容 此時的$1 = funcarg1 $2 =funcarg2
echo var1 = $var1  //此時呼叫的var1值則是由afunc內定意的$var
echo $0: $1 $2   // 此時取的值以是命令槁中的值... 不是function

///大部份來說都沒有什麼問題  可能會有人有疑問為什麼最後一行echo出的值不是function中的吧


假設這個命令稿為如下...
 -----------------------------------------------------
   1   2   3   4   5
 (一到五行都為function 中定意的內容 )
   6
 (在命令稿中定意var1 = out function)
   7
 (echo出 var1的值.... 當然也就是out function)
   8
 (調用函式庫   此時 $0的值為 afunc 也就是函式的名子 $1 和 $2 就是 funcarg1 與funcarg2  以這樣的值去跑在function內的那三行... 此時的var1 值以是function中的那一個 "in function")
   9
 (在命令稿中echo var1 (此時以經是執行命令稿的內容..與afunc無關 只是 afunc以將var1從新定意成"in function"))
  10
 (這行當然也就與 函式沒有關連.所以它調用的值還是當出我們在 command上面 下的
 並不是function中的內容..)
 
  命令稿中的var1值可以替換
  而$0 則是原本的那一個...
  並不會因為function而影響

(本文程式範例取自 oreilly 的 learning the bash shell
 解釋的地方如有錯誤還請多多指教)

導覽

[0] 文章列表

[#] 下頁

前往完整版本