我想写一个循环15个字符串的脚本(可能是数组?)这可能吗?
类似于:
for databaseName in listOfNames
then
# Do something
end
我想写一个循环15个字符串的脚本(可能是数组?)这可能吗?
类似于:
for databaseName in listOfNames
then
# Do something
end
当前回答
您可以这样使用:
## declare an array variable
declare -a arr=("element1" "element2" "element3")
## now loop through the above array
for i in "${arr[@]}"
do
echo "$i"
# or do whatever with individual element of the array
done
# You can access them using echo "${arr[0]}", "${arr[1]}" also
也适用于多行数组声明
declare -a arr=("element1"
"element2" "element3"
"element4"
)
其他回答
您可以这样使用:
## declare an array variable
declare -a arr=("element1" "element2" "element3")
## now loop through the above array
for i in "${arr[@]}"
do
echo "$i"
# or do whatever with individual element of the array
done
# You can access them using echo "${arr[0]}", "${arr[1]}" also
也适用于多行数组声明
declare -a arr=("element1"
"element2" "element3"
"element4"
)
这些答案中没有一个包含计数器。。。
#!/bin/bash
## declare an array variable
declare -a array=("one" "two" "three")
# get length of an array
arraylength=${#array[@]}
# use for loop to read all values and indexes
for (( i=0; i<${arraylength}; i++ ));
do
echo "index: $i, value: ${array[$i]}"
done
输出:
index: 0, value: one
index: 1, value: two
index: 2, value: three
很惊讶还没有人发布这个消息——如果在遍历数组时需要元素的索引,可以这样做:
arr=(foo bar baz)
for i in ${!arr[@]}
do
echo $i "${arr[i]}"
done
输出:
0 foo
1 bar
2 baz
我发现这比“传统”for循环样式(for((I=0;I<${#arr[@]};I++))要优雅得多。
(${!arr[@]}和$i不需要引用,因为它们只是数字;有些人会建议引用它们,但这只是个人偏好。)
每个Bash脚本/会话的可能第一行:
say() { for line in "${@}" ; do printf "%s\n" "${line}" ; done ; }
使用例如:
$ aa=( 7 -4 -e ) ; say "${aa[@]}"
7
-4
-e
可以考虑:echo在此处将-e解释为选项
我循环浏览一系列项目以进行git pull更新:
#!/bin/sh
projects="
web
ios
android
"
for project in $projects do
cd $HOME/develop/$project && git pull
end