簡體   English   中英

在魚殼中壓縮 for 循環(循環多個列表)

[英]Zipping for loop in fish shell (loop over multiple lists)

我經常在命令行中直接編寫臨時循環來運行一系列實驗。 它始終是一次性的,因此為它編寫腳本文件是不必要的開銷。

但是,通常我想壓縮一堆參數,我想運行一個類似於以下的命令:

for arg1,arg2 in 256,lol 128,foo 32,bar
    ./bla --many-flags --name $arg2 --something $arg1
end

我可以用string (或舊版本中的tr delim \\n )在魚中實現類似但非常脆弱的東西,如下所示:

for exp in 256,lol 128,foo 32,bar
    ./bla --many-flags --name (string split ',' $exp)[2] --flag (string split ',' $exp)[1]
end

我想知道有沒有人知道更好的方法,這些方法不需要每次使用一個參數時都使用繁瑣的子命令(一個參數甚至可能被多次使用),更糟糕的是,任意定界符會導致各種問題?

理想情況下,我甚至可以使用它作為一個let像這樣:

for arg1,arg2 in 256,lol
    ./bla --many-flags --ame $arg2 --something $arg1
end

根據對該問題的評論,這是不支持的。 最接近的解決方法似乎是:

for exp in 256,lol 128,foo 32,bar
    echo $exp | read -d , arg1 arg2
    ./bla --many-flags --name $arg2 --flag $arg1
end

對於常規的交互式使用來說不太令人滿意,但我想我會活下來的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM