相关疑难解决方法(0)

在Bash中从文本文件创建数组

脚本获取URL,解析所需的字段,并将其输出重定向以保存在文件file.txt中.每次找到字段时,输出都会保存在新行中.

file.txt的

A Cat
A Dog
A Mouse 
etc... 
Run Code Online (Sandbox Code Playgroud)

我想file.txt在一个新脚本中从中创建一个数组,其中每一行都是数组中自己的字符串变量.到目前为止,我尝试过:

#!/bin/bash

filename=file.txt
declare -a myArray
myArray=(`cat "$filename"`)

for (( i = 0 ; i < 9 ; i++))
do
  echo "Element [$i]: ${myArray[$i]}"
done
Run Code Online (Sandbox Code Playgroud)

当我运行这个脚本时,空格导致单词被分割而不是获取

期望的输出

Element [0]: A Cat 
Element [1]: A Dog 
etc... 
Run Code Online (Sandbox Code Playgroud)

我最终得到这个:

实际输出

Element [0]: A 
Element [1]: Cat 
Element [2]: A
Element [3]: Dog 
etc... 
Run Code Online (Sandbox Code Playgroud)

如何调整下面的循环,使每行上的整个字符串与数组中的每个变量一一对应?

arrays bash scripting loops variable-assignment

71
推荐指数
5
解决办法
8万
查看次数

使用Bash将文件内容提取到数组中

如何逐行在Bash中将文件内容提取到数组中.每一行都设置为一个元素.

我试过这个:

declare -a array=(`cat "file name"`)
Run Code Online (Sandbox Code Playgroud)

但它没有用,它将整行提取为[0]索引元素

arrays bash

19
推荐指数
2
解决办法
5万
查看次数

列出目录1中但不在目录2中的文件,反之亦然?

嘿,我开始使用bash shell脚本,我正在尝试为一个赋值创建一个脚本,当你输入两个目录时,它会检查它们是否存在并根据错误信息显示,如果两个目录都存在,它将列出之间的差异当前目录.

$ cd dir-1
$ myshellscript . dir-2 (comparing . aka dir-1 against dir-2) 
Run Code Online (Sandbox Code Playgroud)

输出:

Files that are in . but not in dir-2
-rw------- 1 ddddd users   1 2011-03-1 01:26 123123123

Files that are in dir-2 but not in .
-rw------- 1 ddddd users   1 2011-03-1 01:26 zzzzzzzzzzzz
Run Code Online (Sandbox Code Playgroud)

到目前为止,我似乎没有检测目录是否存在,也没有列出差异:

dir-1=$1
dir-2=$2

if [ $# > 2  ]
   then
      echo "Usage: compdir dir-name1 dir-name 2"
      exit 1
   elif [ $# < 2 ]
      then
         echo "Usage: comdir dir-name1 dir-name …
Run Code Online (Sandbox Code Playgroud)

linux bash shell

10
推荐指数
1
解决办法
1万
查看次数

为什么 read 在 bash 中抛出错误但工作正常?

这个 bash 脚本将一个数组写入一个文件,然后将该文件读回另一个数组。(这对于脚本之间基于数组的通信很有用。)但是,该IFS行(第 12 行)捕获了一个奇怪的、未报告的错误。为什么?

#!/bin/bash

# eso-error-ic

trap 'echo Error trapped, with code $?, on line ${LINENO}' ERR

# write data to a file
arr=(0 abc) && printf "%s\n" "${arr[@]}" > eso.out

# read data from the file into an array
# throws an error!!
IFS=$'\n' read -d '' -a new_arr < eso.out

# but it worked...
echo ${new_arr[0]}
echo ${new_arr[1]}
Run Code Online (Sandbox Code Playgroud)

脚本输出:

Error trapped, with code 1, on line 12
0
abc
Run Code Online (Sandbox Code Playgroud)

缺少的是产生错误时显示的任何类型的消息。你得到的只是来自陷阱的消息,但没有关于错误是什么的消息。 …

unix linux bash shell ifs

3
推荐指数
1
解决办法
631
查看次数

在 while 循环 bash 中通过多个值重复输出循环

我试图在 bash 中使用 while 循环来遍历 3 个文件的内容。它们包含名称、aws 账户和 aws 账号的列表。

但循环不正确,它不断重复列表中的第一个名称和列表中的第一个 aws 环境。

这是我看到的输出:

AWS user name: aadatiya does not exist in AWS account: company-lab
AWS user name: aadatiya does not exist in AWS account: company-lab
AWS user name: aadatiya does not exist in AWS account: company-lab
AWS user name: aadatiya does not exist in AWS account: company-lab
AWS user name: aadatiya does not exist in AWS account: company-lab
AWS user name: aadatiya does not exist in AWS account: company-lab …
Run Code Online (Sandbox Code Playgroud)

bash

1
推荐指数
1
解决办法
824
查看次数

标签 统计

bash ×5

arrays ×2

linux ×2

shell ×2

ifs ×1

loops ×1

scripting ×1

unix ×1

variable-assignment ×1