PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Linux
[script] $用法
作者:
dazip8959
(NCTU蕭)
2021-10-25 22:42:39
如下圖,我想透過迴圈把T0~T6的值給echo出來。echo ${T${i}} 方法語法不對,在不使
用bash的前提下請問有其他辦法嗎?還是echo 兩個$ $的方法就是不可行的?
https://i.imgur.com/4fP9idu.jpg
作者:
creepy
(左招財 右納福)
2021-10-25 23:10:00
for vname in T{0..6};do echo "${!vname}";done忘了這是bash 哈哈
作者:
rickieyang
(Rickie Yang)
2021-10-25 23:13:00
樓上 ! 的用途是?
作者:
kdjf
(我抓得到什麼呢?)
2021-10-25 23:13:00
樓上關鍵字: indirect expansion
作者:
creepy
(左招財 右納福)
2021-10-25 23:30:00
POSIX sh要用eval的方式 搭配while迴圈 比較艱難
https://tinyurl.com/wkncyze9
我找到的 應該可以改來用
作者:
sppmg
(sppmg)
2021-10-26 12:50:00
eval echo \$T$n 這樣不知道能否剛測試ok,配個 for n in {1..6} 就好
作者: dazip8959 (NCTU蕭)
2021-10-26 15:33:00
謝謝上面的所有回答,目前看起來s大的方法最簡單,之前有試著加上eval 但是沒有加上\只印出i的值,請問\代表的是什麼?再次感謝回答!
作者:
rickieyang
(Rickie Yang)
2021-10-26 23:44:00
eval 的可讀性很低,久了連自己都看不懂.
作者:
sppmg
(sppmg)
2021-10-27 01:15:00
\$ 的 \ 是跳脫字元,讓它在第一次展開時被視為純文字,第二次才做為變數標記符號(不過我不知道 eval 是否只會展開兩次)。
https://stackoverflow.com/a/11065196
這裡有不錯的解釋有提到如果是純變數可以用 ! 處理(不過是否是 bash only我就不知道了),eval 則是更泛用的方式。最後還是提一下,eval == evil ,如果不是為了相容前人的程式,建議還是用陣列處理。
作者:
Gold740716
(項為之強)
2021-10-27 09:37:00
bash 才有陣列,而且寫法很醜
作者:
kdjf
(我抓得到什麼呢?)
2021-10-27 12:19:00
要漂亮的解法就是包進function,就能有多一次展開變數的機會。不過各種東西的內外傳遞會麻煩一點
繼續閱讀
[問題] 新裝的硬碟無法mount
chings22
[問題] 請問音樂都不會預設附有replaygain嗎?
s9209122222
[問題] 如何讓nvme安裝nvme?
leojojo
[問題] USB 裝置中的 exe file
gowrite
[問題] 大量的資料夾名稱修改
toyakoyosu
[問題] 如果要GPU直通要怎麼選主機板
bfbf510a
[問題] Ubuntu內建的Firefox
iddqd
[問題] manjaro軟體包更新問題
a23718408
Re: [問題] bash 與 ./ 執行 script 差異
DarkKiller
[問題] bash 與 ./ 執行 script 差異
scitamehtam
Links
booklink
Contact Us: admin [ a t ] ucptt.com