我写了一个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]应该具有“”(空字符串) 为什么不是这样?