請教 linux shell bash, 帶variable 入 function...

用 bash

帶個 variable 入 function

因為會帶唔同既 variable 入去,
所以唔可以在 function 入面寫死個 variable.

想run 完 function 之後, 原本帶果個 variable 要改變...

請教師兄們, 要加邊句 code?
謝謝
  1. #!/bin/bash

  2. tag1="hello"

  3. changeword() {
  4.         tag2=$1"9999"
  5.         ......想將 $tag2 個結果, 改變原本帶入黎既 $tag1........
  6. }

  7. changeword $tag1
  8. echo $tag1


  9. 想結果出 hello9999
複製代碼

本帖最後由 sapphire4890 於 2020-3-27 22:09 編輯

回覆 1# mankowk
  1. #!/bin/bash

  2. tag1="hello"

  3. changeword() {
  4.     tag1=$1"9999"
  5. }

  6. changeword $tag1
  7. echo $tag1
複製代碼
你打錯字?
一係最底果個echo $tag2都得, 如果你用你自己貼出黎果pat野

Online Compiler
https://repl.it/@willsonlaw/FlakyBitterDirectories

TOP

回覆 2# sapphire4890

多謝師兄回覆...

其實咁既.....
例如: 我打算加埋 tag1 tag3 tag4 tag5 ....
但之後又會用返 改變左後既  tag1 tag3 tag4 tag5 ....
所以我先會咁樣問..........
或者係咁 program logic 錯左........
  1. #!/bin/bash

  2. tag1="hello"
  3. tag3="Peter"

  4. changeword() {
  5.         tag2=$1"9999"
  6.         ......想將 $tag2 個結果, 改變原本帶入黎既 $tag1........
  7. }

  8. changeword $tag1
  9. changeword $tag3
  10. echo $tag1
  11. echo $tag3

  12. 想結果出下面既...

  13. hello9999
  14. Peter9999
複製代碼

TOP

本帖最後由 pchai 於 2020-3-28 08:57 編輯

Pass by reference, 通常 bash好少咁寫. 太舊既bash唔support
  1. #!/bin/bash

  2. tag1="hello"

  3. changeword() {
  4.   local -n tag2=$1
  5.   tag2=$tag2"9999"
  6. }

  7. changeword tag1
  8. echo $tag1
複製代碼

TOP

回覆 3# mankowk


    會唔會係CHING唸到複雜左 ...
因為function入面整新/update variable. 其實下面execute完print返係會出valid result.
  1. #!/bin/bash

  2. tag1="hello"
  3. tag3="sapphire4890"
  4. changeword() {
  5.   tag1=$1"9999";
  6.   tag2="Hello HKEPC"
  7.   tag3="sapphire4870"
  8. }

  9. changeword $tag1
  10. echo $tag1

  11. echo "$tag2";
  12. echo "$tag3";
複製代碼
result:
hello999
Hello HKEPC
sapphire4870

TOP

回覆 4# pchai

多謝 pchai兄 幫忙, 無錯勒, 就係 Pass by Reference,
我到依家都唔係太理解個 concept.


回覆 5# sapphire4890

謝謝 sapphire4890兄 回覆,
但係呢個方法唔係咁好....
因為要在 function 入面寫 n 個 tagX, 失左效果.

TOP

回覆 4# pchai

想再請教 pchai兄...
下面段 code 係唔 work 既...
可以教下我點樣執執佢....
謝謝..

想帶兩個 variable 入 function,
run 完之後, 搞過新既 variablea(名) 出黎用,

但要係  
$"part$worda"    -----> 我意思係等於 $partA
$"part$wordb"    -----> 我意思係等於 $partB

最後係想再返用 上面個兩個  $"part$worda" $"part$wordb"
  1. #!/bin/bash

  2. worda="A"
  3. wordb="B"
  4. tag1="Peter"
  5. tag2="Sam"

  6. changeword() {
  7.     part"$1"="999"$2
  8.   }

  9. changeword $worda $tag1
  10. changeword $wordb $tag2

  11. echo $"part$worda"
  12. echo $"part$wordb"

  13. 以上結果, 想出
  14. 999Peter
  15. 999Sam
複製代碼

TOP

回覆  mankowk


    會唔會係CHING唸到複雜左  ...
因為function入面整新/update variable. 其實下面e ...
sapphire4890 發表於 2020-3-28 13:35


pass by reference 同 pass by value學program一定要識
你想像variable係一個盒, pass by reference就係成個盒交比個function, 個function做完野成個盒比返你
pass by value就係你比盒個內容佢. 佢知到個內容就話比你知個結果

TOP

回覆 6# mankowk

呢個係 variable variables
https://www.php.net/manual/en/language.variables.variable.php

我無試過係bash咁寫. 如果要寫到咁不如用php或者python
始終bash個syntax 唔太嚴謹,好易出事

TOP

回覆  mankowk

呢個係 variable variables


我無試過係bash咁寫. 如果要寫到咁不如用php或者python
始終 ...
pchai 發表於 2020-3-28 22:49


實際想我有睇唔到有咩需要咁樣寫code.不如你比個實例你想做乜

TOP