當前位置:首頁 » 編程軟體 » shell腳本中數組

shell腳本中數組

發布時間: 2022-05-28 18:19:41

① shell腳本中,無法獲取「關聯數組」(字典)的key,嘗試過很多方法,輸出都不對,求教

  1. 看下你使用的bash版本到沒到4.0,使用指令bash --version查看

  2. 使用變數前先確認該變數是否在之前已經被定義過了 使用source 命令或 . 命令啟動腳本時是不會開辟新線程的所以你在bash窗口裡定義的沒加local 變數 都會被腳本繼承 此時你可以先刪除這個變數 即定義phone 時 unset phone

② Shell腳本如何傳遞數組參數或Shell中有引用傳遞嗎

取第三個參數值使用$3.以下是一些shell執行的特殊變數,供你參考:
$0 這個程式的執行名字
$n 這個程式的第n個參數值,n=1..9
$* 這個程式的所有參數
$# 這個程式的參數個數
$$ 這個程式的PID
$! 執行上一個背景指令的PID
$? 執行上一個指令的返回值
$@ 跟$*類似,但是可以當作數組用

③ shell腳本中無法對數組賦值

第一行申明shell的時候sh改為bash就好了。
( ) 這種賦值方法在sh里不支持。

④ 請問在這個shell腳本中為什麼兩個數組長度不一樣

unset 不能這么用,需要指定數組索引,也就是數組下標,而不是數組的值,你可以這樣干:
#check if there are any files added
folder_list=(1 2 3 4 5)
file_list=(1 2)
declare -a result_list
t=0
flag=0
echo folder_list=${folder_list[*]}
echo file_list=${file_list[*]}
for m in "${folder_list[@]}"
do
for l in "${file_list[@]}"
do
if [ "$m" == "$l" ]; then
flag=1
break
fi
done
if [ $flag -eq 0 ]; then
result_list[t]=$m
t=$((t+1))
else
flag=0
fi
done
echo result_list=${result_list[*]}

弄個結果數組保存結果,把在file_list里找不到的folder_list值存到結果數組中。
本回答由提問者推薦

⑤ shell中數組怎麼循環賦值,急

Bash環境可以這樣。

#!/bin/bash

for ((i=1;i<=100;i++))

do

name[$i]=$i

echo ${name[$i]} #為方便檢查,加了列印

done

通用點的(符合POSIX標准)可以這樣:

#!/bin/sh

declare -a name

for i in `seq 100`

do

name[$i]=$i

echo ${name[$i]} #為方便檢查,加了列印

done

⑥ shell腳本中數組array常用技巧學習實踐

shell中數組的下標默認是從0開始的
1。將字元串放在數組中,獲取其長度
#!/bin/bash
str=a
b
--n
d
array=($str)
length=${#array[@]}
echo
$length
for
((i=0;
i<$length;
i++))
do
echo
${array[$i]}
done
執行結果:
[oracle@99bill-as9
array]$
sh
length.sh
4
a
b
--n
d
列印字元串:
#!/bin/bash
str=a
b
c
for
i
in
$str
do
echo
$i
done
或者:
#!/bin/bash
str=a
b
c
array=($str)
for
((i=0;i<${#array[@]};i++))
do
echo
${array[$i]}
done
執行結果:
2。字元串用其他字元分割時
#!/bin/bash
str2=a#b#c
a=($(echo
$str2
|
tr
'#'
'
'
|
tr
-s
'
'))
length=${#a[@]}
for
((i=0;
i<$length;
i++))
do
echo
${a[$i]}
done
#echo
${a[2]}
執行結果:
3。數組的其他操作
#!/bin/bash
str=a
b
--n
dd
array=($str)
length=${#array[@]}
#ouput
the
first
array
element直接輸出的是數組的第一個元素
echo
$array
#Use
subscript
way
access
array用下標的方式訪問數組元素
echo
${array[1]}
#Output
the
array輸出這個數組
echo
${array[@]}
#Output
in
the
array
subscript
for
3
the
length
of
the
element輸出數組中下標為3的元素的長度
echo
${#array[3]}
#Output
in
the
array
subscript
1
to
3
element輸出數組中下標為1到3的元素
echo
${array[@]:1:3}
#Output
in
the
array
subscript
greater
than
2
elements輸出數組中下標大於2的元素
echo
${array[@]:2}
#Output
in
the
array
subscript
less
than
2
elements輸出數組中下標小於2的元素
echo
${array[@]::2}
執行結果:
a
b
a
b
--n
dd
2
b
--n
dd
--n
dd
a
b
4。遍歷訪問一個字元串(默認是以空格分開的,當字元串是以其他分隔符分開時可以參考2)
#!/bin/bash
str=a
--m
for
i
in
$str
do
echo
$i
done
執行結果:
a
--m
5。如何使用echo輸出一個字元串str=-n.
由於-n是echo的一個參數,所以一般的方法echo
$str是無法輸出的.
解決方法可以有:
echo
x$str
|
sed
's/^x//'
echo
-ne
$str/n
echo
-e
$str/n/c
printf
%s/n
$str(這樣也可以)
作者祝瑩的專欄

⑦ shell腳本中無法取得數組中某元素的值

$[ $sun + ${array[i]} ]
沒有這個用法,改一下:
$((sum+${array[$i]}))

array=(`echo $@`) 數組賦值不能這么寫,建議用for循環逐個賦值。

linux shell腳本中,數組名稱是一個變數,怎麼列印出它裡面的元素

題主你好,

代碼及測試截圖如下:

希望可以幫到題主, 歡迎追問.

⑨ shell腳本名字中含有參數的數組定義、調用、列印問題

實際上,bash中可以直接對數組賦值的,不需要使用declare。而且取長度的用法${#var}也只能是在bash中。這些都不是符合POSIX標準的用法,而是bash所特有的。所以,要簡單點的話,就將聲明改為bash,即#!/bin/bash。當然,還有兩處小錯,要仔細點:var=(12335);#賦值時等號兩邊不能有空格echo"${#var};#引號不成對啊,這里也可以不要引號的命令後面的分號其實也是多餘的,只要換行了,分號就不需要(當然加了也沒錯)

⑩ shell腳本用for循環數組出來的還是數組本身是什麼原因

for...in 語句用於對數組或者對象的屬性進行循環操作。
語法:

for (變數 in 對象){ 在此執行代碼}

for循環是對數組的元素進行循環,而不能引用於非數組對象。
語法:

for(int 變數初始值;條件;遞增或遞減){ 在此執行代碼}

舉例:

var array=[1,2,3,4,5];//定義一個數組,實現數組元素的遍歷。用For...in實現for(var i in array){ alert(array[i]);//數組的元素}用for循環實現for(var i=0;i<array.length;i++){ alert(array[i]);//數組的元素}

熱點內容
搜解壓縮 發布:2024-05-17 15:38:32 瀏覽:764
水泵揚程演算法 發布:2024-05-17 15:37:29 瀏覽:977
英雄聯盟技能腳本 發布:2024-05-17 14:59:41 瀏覽:444
全名k歌安卓手機裡面怎麼錄屏 發布:2024-05-17 14:40:07 瀏覽:180
常用資料庫介紹 發布:2024-05-17 14:31:38 瀏覽:504
中孚存儲介質信息消除工具 發布:2024-05-17 14:31:33 瀏覽:589
伺服器訪問ip如何調轉主頁 發布:2024-05-17 14:30:33 瀏覽:789
好玩的解壓化妝小游戲 發布:2024-05-17 14:10:57 瀏覽:127
交通銀行怎麼登陸不了密碼 發布:2024-05-17 13:54:48 瀏覽:543
安卓如何自動連接無線 發布:2024-05-17 13:53:51 瀏覽:262