導航:首頁 > 操作系統 > linux數組遍歷數組

linux數組遍歷數組

發布時間:2022-09-13 06:40:43

linux 文件夾中的文件內容比較

這個我有個大概的思路:
比如說/tmp 目錄
1 先利用cd ,ls 列出所有該目錄下的所有文件(包括目錄)
將名字放入一個數組內。
2 循環遍歷數組
每個循環內判斷該對象是文件還是目錄 (file命令)
2.1 if 是目錄
繼續重復第一步放入一個數據內
繼續處理
2.2 if是文件
找到另一個文件夾內相同的文件 比較(diff命令) 輸出不同的內容

end

裡面就是遞歸循環復雜了點,思路理清了,就比較簡單了,剩下就慢慢寫 一步步調試了。

⑵ Linux 下C語言編程題!

1.#include<stdio.h>
#include<string.h>
#include<malloc.h>
main()
{ char *s,*h,*t;int l;
s=(char*)malloc(20*sizeof(char));
printf("input a string:");
scanf("%s",s);
l=strlen(s);/*求字元串長度賦給l*/
h=s;t=s+l-1; /*h指針指向第一個字元,t指向最後一個*/
for(;h<t;h++,t--) /*從頭尾向中比較*/
{if((*h)!=(*t)){printf("not symmetric");break;} /*發現不同的字元,顯示不對稱,並結束比較*/
}if(h>=t)printf("symmetric"); /*如果比較完了,則顯示對稱*/
getch();
}
2.#include<stdio.h>
#include<string.h>
#include<malloc.h>
main()
{ char *s,*p,*q;
s=(char*)malloc(20*sizeof(char));
printf("input string:");
scanf("%s",s);
p=s;
while(*p)
{if(*p=='a'||*p=='e'||*p=='i'||*p=='o'
||*p=='u')
{q=p;/*讓q指針和q指針指向同一個字元*/
while(*q)
{*q=*(q+1);q++;} /*將當前字元後面的字元前移,相當於把p指著的當前字元刪除*/
p--;}
p++;}
printf("%s",s);
getch();
}
3.#include<stdio.h>
#include<string.h>
main()
{ int a,i=0,s=0;char b[52],c[100],t;
for(t='A';t<='Z';t++)
b[i++]=t;
for(t='a';t<='z';t++)
b[i++]=t;
for(i=0;i<52;i++)
printf("%c",b[i]);/*將52個大小寫字母存入數組b中*/
srand(time(NULL)); /*使每次隨機產生的數不同*/
for(i=0;i<100;i++) /*循環100次,產生100個隨機字母*/
{ a=rand()%51; /*每次從0到51中產生一個隨機數,從而從b〔0〕到b〔51〕中選出一個字母*/
c[i]=b[a]; /*每次產生的隨機字母存入數組c中*/
if(b[a]=='a'||b[a]=='e'||b[a]=='i'||
b[a]=='o'||b[a]=='u'||b[a]=='A'||
b[a]=='E'||b[a]=='I'||b[a]=='O'||b[a]
=='U')s++; /*當是母音字母時,用s來統計個數*/
}
printf("\n");
for(i=0;i<100;i++)printf("%c ",c[i]);
printf("\ns:%d",s);
getch();
}

⑶ Linux Shell 下有3個數組 A(a b c) B(1 2 3) C(x y z) 現在想列印出數組D ("A[]"_"B[]"_"C[]")

很簡單啊……

#!/bin/bash

a=(a b c)
b=(1 2 3)
c=(x y z)

h=0
for ((i=0; i < 3; i++)); do
for ((j=0; j < 3; j++)); do
for ((k=0; k < 3; k++)); do
echo "d[$h] = ${a[$i]}_${b[$j]}_${c[$k]}"
let h++
done
done
done

輸出結果如下:

d[0] = a_1_x
d[1] = a_1_y
d[2] = a_1_z
d[3] = a_2_x
d[4] = a_2_y
d[5] = a_2_z
d[6] = a_3_x
d[7] = a_3_y
d[8] = a_3_z
d[9] = b_1_x
d[10] = b_1_y
d[11] = b_1_z
d[12] = b_2_x
d[13] = b_2_y
d[14] = b_2_z
d[15] = b_3_x
d[16] = b_3_y
d[17] = b_3_z
d[18] = c_1_x
d[19] = c_1_y
d[20] = c_1_z
d[21] = c_2_x
d[22] = c_2_y
d[23] = c_2_z
d[24] = c_3_x
d[25] = c_3_y
d[26] = c_3_z

⑷ linux shell 腳本 求任意10個數的最大值。(使用數組)

讀取10個數字存入數組中

然後使用一個變數max將它的初始值設置為數組中第一個元素的值

接著從數組中第二個元素開始遍歷整個數組

如果某個元素的值大於max則將max設置為該值

如此遍歷完整個數組後max中便是整個數組中最大的值


下面是一個簡單的示例代碼

#!/bin/bash

echo-n'輸入10個數:'
read-aa

max=${a[0]};

foriin{1..9}
do
if[${a[$i]}>$max]
then
max=${a[$i]}
fi
done

echo"最大值為:$max"

exit0

⑸ linux腳本,在一個循環中賦值一個數組

數組的賦值操作有問題,改成下面這樣:
for ubootfile in $uboot_list
do
FILE=`find . -name $ubootfile -print -quit`
if [ -n "$FILE" ]; then
a=(${a[@]} $FILE)
else
b=(${b[@]} $FILE)
fi
done
echo "found files:"
echo ${a[@]}
echo "missing files:"
echo ${b[@]}

下面是數組操作的講解,請參考:
數組作為一種特殊的數據結構在任何一種編程語言中都有它的一席之地,當然bashshell也不例外。本文就shell數組來做一個小的總結。
在這里只討論一維數組的情況,關於多維數組(事實上,你得用一維數組的方法來模擬),不涉及。這里包括數組的復制,計算,刪除,替換。

數組的聲明:
1)array[key]=value # array[0]=one,array[1]=two
2)declare -a array # array被當作數組名
3)array=(value1 value2 value3 ... )
4)array=([1]=one [2]=two [3]=three ... )
5)array="one two three" # echo ${array[0|@|*]},把array變數當作數組來處理,但數組元素只有字元串本身
數組的訪問:
1)${array[key]} # ${array[1]}
數組的刪除
1)unsetarray[1] # 刪除數組中第一個元素
2)unset array # 刪除整個數組
計算數組的長度:
1)${#array}
2)${#array[0]}#同上。 ${#array[*]} 、${#array[@]}。注意同#{array:0}的區別
數組的提取
從尾部開始提取:
array=( [0]=one [1]=two [2]=three [3]=four )
${array[@]:1} # two three four,除掉第一個元素後所有元素,那麼${array[@]:0}表示所有元素
${array[@]:0:2} # one two
${array[@]:1:2} # two three

子串刪除
[root@localhostdev]# echo ${array[@]:0}
one two three four
[root@localhostdev]# echo ${array[@]#t*e} # 左邊開始最短的匹配:"t*e",這將匹配到"thre"
one two e four
[root@localhostdev]# echo ${array[@]##t*e} # 左邊開始最長的匹配,這將匹配到"three"
[root@localhostdev]# array=( [0]=one [1]=two [2]=three [3]=four )
[root@localhostdev]# echo ${array[@] %o} # 從字元串的結尾開始最短的匹配
one tw three four
[root@localhostdev]# echo ${array[@] %%o} # 從字元串的結尾開始最長的匹配
one tw three four
子串替換
[root@localhostdev]# array=( [0]=one [1]=two [2]=three [3]=four )
第一個匹配到的,會被刪除
[root@localhostdev]# echo ${array[@] /o/m}
mne twm three fmur

所有匹配到的,都會被刪除
[root@localhostdev]# echo ${array[@] //o/m}
mne twm three fmur
沒有指定替換子串,則刪除匹配到的子符
[root@localhostdev]# echo ${array[@] //o/}
ne tw three fur
替換字元串前端子串
[root@localhostdev]# echo ${array[@] /#o/k}
kne two three four
替換字元串後端子串
[root@localhostdev]# echo ${array[@] /%o/k}
one twk three four

⑹ linux shell中數組循環取值和賦值的問題。

[seesea@UC ~]$ cat a.txt
1
2
3
4
a
b
c
d
[seesea@UC ~]$ ar=( $(cat a.txt) )
[seesea@UC ~]$ for (( i = 0; i < ${#ar[@]}; ++i )); do echo "ar[$i] = ${ar[i]}"; done
ar[0] = 1
ar[1] = 2
ar[2] = 3
ar[3] = 4
ar[4] = a
ar[5] = b
ar[6] = c
ar[7] = d

用數組更方便吧。

⑺ Linux shell 數組array基礎和$a的區別

Linux Bash中,數組變數的賦值有兩種方法:
(1) name = (value1 ... valuen) // 此時下標從0開始;
(2) name[index] = value
下面以一個簡單的腳本來說明,腳本內容如下:
#!/bin/bash
#定義數組
A=(a b c def)
#把數組按字元串顯示輸出
echo ${A[@]}
#屏幕顯示:a b c def
#數組的長度表示${#A[*]}
len=${#A[*]}
echo ${#A[*]}
#屏幕顯示:4
#改變數組元素的值
A[3]='vivian'
echo ${A[*]}
#屏幕顯示:a b c vivian
#循環輸出數組元素
i=0
while [ $i -lt $len ]
do
echo ${A[$i]}
let i++
done
#屏幕輸出:
# a
# b
# c
# vivian

#循環輸出數組元素的另一種寫法,注意,在條件中,用#a[@]取其個數。
for ((i=0;i<${#A[@]};i=$i+1))
do
echo ${A[$i]}
done
#循環輸出數組元素的另一種寫法,注意,在條件中,引用變數一定要用雙引號 ,否則報錯。
for (( j=0; j<"$len"; j=j+1 )) //len表示數組長度值
do
echo ${A[$j]}
done
#循環輸出數組元素的另一種寫法,注意,${A[*]}不能寫成$A ,$A默認是第一個元素。 如果A="a b c ded",就可以寫$A,
for value in ${A[*]}
do
echo $value
done
ps:
若a=(1 2 3 4)表示所有元素,則其只能用${a[*]}或者${a[@]}來表示。在a=(1 2 3 4)中,$a只是表示第一個元素1。
若a="1 2 3 4"表示所有元素,則其可以用${a[*]}或者${a[@]}或者$a來表示。
假如a="1 2 3 4",則array=($a)就相當於a=(1 2 3 4),不信你可以試試echo ${array[@]}。
上面的例子還可以改寫成以下內容:
for value in $A
do
echo $value
done

⑻ Linux Shell awk中怎麼調用數組和for循環

echo|awk'
{
array[1]=1
array[2]=2
array[3]=3
array[4]=4
array[5]=5

for(i=1;i<=5;++i){
printarray[i]
}
}'

⑼ linux shell 我建立了一個數組 定義一個整形變數tmp在循環裡面有個 tmp = a[j]運行時顯示

要獲得數組某個元素的數據,需要進行「解引用」操作,即:tmp = ${ a[j] }

⑽ linux腳本,在一個循環中賦值一個數組

1、if
[
-n
"$FILE"
];
then
如果$FILE非空,你賦給a[i]
2、如果$FILE為空,你給了b[i]一個空值,應該賦給$ubootfile吧
3、a[i]和b[i]的i值都沒有遞增,最終只能得到i默認值時的a和b吧

閱讀全文

與linux數組遍歷數組相關的資料

熱點內容
阿里雲郵smtp伺服器地址 瀏覽:250
解壓館認知理解 瀏覽:239
為什麼使用非官方伺服器會封號 瀏覽:9
佛山加密文檔軟體 瀏覽:813
港式5張梭哈源碼 瀏覽:241
數據中心pdf 瀏覽:524
crf源碼解析 瀏覽:853
伺服器軟體開發是什麼意思 瀏覽:941
刪除彩信android 瀏覽:862
元宵節猜燈謎h5源碼 瀏覽:69
樂培生app怎麼綁定 瀏覽:762
視頻壓縮不清楚怎麼說 瀏覽:525
加好友伺服器繁忙是怎麼回事 瀏覽:381
怎麼解綁app的支付寶賬號 瀏覽:912
ip地址伺服器不可用怎麼解決方法 瀏覽:185
為什麼軟體需要伺服器 瀏覽:64
redis操作命令大全 瀏覽:597
python字元串重復索引 瀏覽:963
為什麼香信新版本連接不上伺服器 瀏覽:51
元旦程序員打羽毛球 瀏覽:615