Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于将bash数组的内容与文件的内容进行比较的最优雅的技术_Bash - Fatal编程技术网

用于将bash数组的内容与文件的内容进行比较的最优雅的技术

用于将bash数组的内容与文件的内容进行比较的最优雅的技术,bash,Bash,我想比较数组的内容和文件的内容。我想最好的解决办法是: b=( some data ) a=$(<file) if [ $a -ne ${b[@]} ] then echo "variables are different" fi b=(一些数据) a=$(试试这个: $ cat file a b c $ echo -n "arrays are " $ x1=( a b c ) $ mapfile -t x2 < file $ [[ ${x1[@]} == ${x2[@]}

我想比较数组的内容和文件的内容。我想最好的解决办法是:

b=( some data )
a=$(<file)
if [ $a -ne ${b[@]} ]
then
    echo "variables are different"
fi
b=(一些数据)
a=$(试试这个:

$ cat file
a
b
c
$ echo -n "arrays are "
$ x1=( a b c )
$ mapfile -t x2 < file
$ [[ ${x1[@]} == ${x2[@]} ]] && echo "identical" || echo >&2 "different"
$cat文件
A.
B
C
$echo-n“阵列是”
$x1=(a b c)
$mapfile-t x2<文件
$[${x1[@]}=${x2[@]}]]&&echo“相同”| | echo>&2“不同”
试试这个:

$ cat file
a
b
c
$ echo -n "arrays are "
$ x1=( a b c )
$ mapfile -t x2 < file
$ [[ ${x1[@]} == ${x2[@]} ]] && echo "identical" || echo >&2 "different"
$cat文件
A.
B
C
$echo-n“阵列是”
$x1=(a b c)
$mapfile-t x2<文件
$[${x1[@]}=${x2[@]}]]&&echo“相同”| | echo>&2“不同”

通过使用Bash的进程替换:

b=( some data )
if ! diff <(echo ${b[*]}) file; then
  echo "different"
fi
b=(一些数据)

如果通过使用Bash的进程替换!diff:

b=( some data )
if ! diff <(echo ${b[*]}) file; then
  echo "different"
fi
b=(一些数据)

if!diff您需要定义数组的预期表示形式。您希望这些项以空格分隔、换行分隔、引用还是其他形式?@ams:word spliting将重新排列填充请注意,
-ne
是Bourne shell算术,而不是文本、比较,这就是您要查找的内容吗?文件是多行的吗除了cdarke所说的之外,如果
b
包含多个元素,则
if
将失败,错误为“参数太多”您需要定义数组的预期表示形式。您想让项目以空格分隔、换行分隔、引用还是什么?@ams:word spliting将重新排列填充注意,
-ne
是Bourne shell算术,而不是文本、比较,这是您要找的吗?文件是多行的吗?除了cdarke所说的,如果
b
包含多个元素,那么
if
将因错误“参数太多”而失败,您可以使用
mapfile-t x2
而不是
x2=($(我没有mapfile,我的Archlinux不知道如何下载它的
bash
builtin!
help-mapfile
你可以使用
mapfile-t2
而不是
x2=($)(我没有mapfile,我的Archlinux不知道如何下载它的
bash
builtin!
help-mapfile