作者Propagator (傳來傳去)
看板Linux
標題[問題] 參數的assign方式?
時間Sat Dec 14 16:27:16 2013
/ 過參數 但好像沒有關於這問題
比如以下script:
swap()
{
tmp=$1
v2= $2
$1=${!v2}
$2=${!tmp}
}
a=5
b=1
swap a b
echo "after swap:a=$a, b=$b"
會出現command not found的message
function好像真的還蠻不好用的 不像一般程式語言可以改argument
有沒有大大有方式可以改argument的value而不經由修改全域變數的方式進行?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.240.128.132
※ 編輯: Propagator 來自: 111.240.128.132 (12/14 16:29)
→ lantw44:v2= 後面不能有空白 12/14 17:17
→ jokester:$1不是這樣賦值 要用set -- ${!v2} ${!tmp} 12/14 17:42
→ jokester:另外每次call函數有自己的$@. 在裡面改也不影響全域 12/14 17:49
→ Propagator:因此swap之後的echo經由上面的方法不會有變化? 12/14 17:54
→ FedoraHanT:eval a="$b" b="$a" 12/14 22:43
→ FedoraHanT:eval a=\"$b\" b=\"$a\" #改一下 12/15 01:26