将元素存储在数组中时出现意外结果

时间:2019-02-02 09:51:36

标签: bash shell sh

我写了一个shell脚本 我在其中解析 interact_info 中的数据以分隔换行符的参数并将其存储在 $ var。

现在,我将其存储在数组中,以便可以发送它们以期望脚本 喜欢(预期结果)

 try.exp Directory '' 'User name' admin Password pass

这里的问题是我只得到6个参数,而不是7个。

喜欢

try.exp Directory 'User name' admin Password pass

但是当我将IFS值更改为'\ r'时 我得到了预期的结果。

这是什么原因?

interact_info='[{ "Directory": "" }, { "User name": "admin" }, { "Password": "pass" }, { "SMTP Server": "10.10.10.0" } ]'

old_IFS=$IFS
IFS=$'\n'

var=$(echo -e "$interact_info" | python -c 'import sys, json; \
stdin = sys.stdin.read()
exit(0) if stdin == "\n" else 0 ; \
interactions = json.loads(stdin); \
my_list = sum([(key, item[key]) for item in interactions for key in item],()); \
[sys.stdout.write(command+"\n") for command in my_list]' );

echo "${var}"
arr_params=($var)
IFS=$old_IFS
echo "${arr_params[@]}"  
cli_raw_op=$(try.exp "${arr_params[@]}" 2>&1);

如果IFS = $'\ n' 变量的值为

+ var='Directory

User name
hcsadmin
Password
hcs@dmin
SMTP Server
10.10.10.0'

由于'\ n'是分隔符,所以arr [1]应该具有“”(空字符串) 为什么不是这样?

0 个答案:

没有答案