ghost 发表于 2019-3-14 15:51:35

shell 的雙變數迴圈

想問個問題, shell 可以用

for i in a b c d e
do
   xxxx
done

來取每個變數

但如果我想做的是取每個 for 的變數時再帶入另一個變數為條件做同一件事,
比如 a 時 grep aa, b 時 grep bb, c 時 grep cc
shell 有沒有類似 python 的 (a,x) 元組功能或可以怎麼做?

walkman660 发表于 2019-3-14 17:57:48

本帖最后由 walkman660 于 2019-3-14 18:06 编辑

ghost 发表于 2019-3-14 16:53

第一個要一堆 if,寫起來太長,跑起來也會多花一點時間.
第二個應該可以,我可以考慮試試.

CUT肯定比AWK快,先不说AWK调用多少东西,单看二进制文件CUT就小得多

错了,应该时这种

# string="hello,shell,haha"
# echo ${string#*,}
shell,haha
# echo ${string##*,}
haha

# echo ${string%,*}
hello,shell
# echo ${string%%,*}
hello

这个效率比CUT高,但在SHELL能处理的量级里,我认为CUT够了

walkman660 发表于 2019-3-14 16:53:00

不太理解繁体名字,不知道猜的对不对
有二维数组,一般懒得用

可以这样
for i in a,aa b,bb c,cc;do
    var1=`echo $i|cut -d ',' -f 1`
    var2=`echo $i|cut -d ',' -f 2`
    grep $var2
done

原理明白了就可以扩展了

ApkB 发表于 2019-3-14 18:23:00

本帖最后由 ApkB 于 2019-3-14 15:55 编辑

#!/bin/bash

for i in f1 f2 f3 ;
do
echo $i is appoint ;
done


在里面加个if不行?

ghost 发表于 2019-3-14 15:57:20

本帖最后由 ghost 于 2019-3-14 16:58 编辑

第一個要一堆 if,寫起來太長,跑起來也會多花一點時間.
第二個應該可以,我可以考慮試試.

我是想做
當 i = HL 時 grep Heilongjiang
當 i = FJ 時 grep Fujian

目前找到的做法是在 for 前先定義 var = " Heilongjiang" ....
在 for 裡再把 var 帶進
(但我還沒寫完,正在試,不知道非數字的變數可不可以這樣用.)
想看看有沒比我這跑起來更快的方法,雖然這種小 script 怎麼跑也花不了太多時間就是...
页: [1]
查看完整版本: shell 的雙變數迴圈