我确信这是重复的,但我搜索相关信息却没有找到任何内容。
我正在使用mapfile来读取文件,但我需要运行脚本的设备没有加载它。所以我选择了另一种方式。
这不是我的脚本,而是一个测试脚本来证明我的观点。
我有一个包含大量统计数据的文件,为了理智而在下面缩短。
echo Carbon\Carbon::parse(DB::table('users')->find(1)->created_at)->toCookieString();
我使用以下代码将文件读入数组(我想在脚本中多次使用此数组)。但是逐行回声。我在每一行都找不到命令。我无法弄清楚如何解决这个问题。
Status
Availability : available
State : enabled
Reason : The virtual server is available
CMP : enabled
CMP Mode : all-cpus
Traffic ClientSide Ephemeral General
Bits In 0 0 -
Bits Out 0 0 -
Packets In 0 0 -
Packets Out 0 0 -
Current Connections 0 0 -
Maximum Connections 0 0 -
Total Connections 0 0 -
Min Conn Duration/msec - - 0
Max Conn Duration/msec - - 0
Mean Conn Duration/msec - - 0
Total Requests - - 0
结果如下
#!/bin/bash
getArray() {
array=() # Create array
while IFS= read -r line # Read a line
do
array+=("$line") # Append line to the array
done < "$1"
}
infile="/home/tony/Desktop/test.txt"
file=getArray $infile
for i in ${file[@]};
do :
echo "$i"
done
我尝试过双重qouting $ i,单个qouting $ i,以及qouting / unqouting数组。我尝试过的任何东西都没有产生任何结果,但是:找不到命令
答案 0 :(得分:0)
这有效:
getArray() {
array=() # Create array
while IFS= read -r line # Read a line
do
array+=("$line") # Append line to the array
done < "$1"
}
infile="/tmp/file"
getArray "$infile" # you would need a return value for "file=getArray $infile"
# and you would write it differently
for i in "${array[@]}";
do
echo "$i"
done
你有三个问题:
file=getArray $infile
不会返回数组读取。您需要更改功能和分配才能正常工作:
。答案 1 :(得分:0)
搞定了
#!/bin/bash
getArray() {
file=() # Create array
while IFS= read -r line # Read a line
do
file+=("$line") # Append line to the array
done < "$1"
}
infile="/home/tony/Desktop/test.txt"
getArray $infile
for i in "${file[@]}";
do :
echo "$i"
done