shell切换用户EOF下变量的使用[: ==: unary operator expected
2017-05-24 18:30
531 查看
shell切换用户EOF下变量的使用[: ==: unary operator expected
情况背景:
在切换用户的时候,for循环获取不到值,如下:su - hadoop <<EOF for mm in ${ip[*]};do if [ ${mm} == ${master} ] then echo "============="${mm} ssh hadoop@${mm} "cd /opt/hadoop && ./sbin/start-all.sh" fi done EOF
报错信息如下:
[: ==: unary operator expected
解决方法:
1.第一种网上搜,都说是mm的值为空导致的,所以需要加上两个[],[[${mm}]],还有是给变量加上双引号,
["${mm}"]。你们可以验证一下。但我觉得最终的方法是第2种
2.就是在su - hadoop切换用户的时候,
<<EOF中变量的使用方法不对,应该是下面这样${mm},多了一个反斜杠,经测试是正确的。
#/bin/bash path=`pwd` source /${path}/../cfg.config echo '++++++++++++++++++'${ip[*]} echo '++++++++++++++++++'${master} su - hadoop <<EOF for mm in ${ip[*]};do if [ \${mm} == ${master} ] then echo "============="\${mm} ssh hadoop@\${mm} "cd /opt/hadoop && ./sbin/start-all.sh" fi done EOF
相关文章推荐
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected
- shell切换用户EOF下变量的使用[: ==: unary operator expected